SlideShare une entreprise Scribd logo
1  sur  4
Programa Calculadora
Por cuestiones de espacio y legibilidad el código fuente de la calculadora en java
se muestra en porciones.
Para crear la calculadora de la imágen anterior debemos tener en cuenta la
interfaz y los eventos. Lo ideal es mantener el código que permite los cálculos en
una clase separada, pero aqui todo se realizará en una única clase.
Para comenzar a trabajar con componentes gráficos y eventos debemos agregar
al inicio del archivo de la clase las siguientes inclusiones:
1 import java.awt.*;
2 import java.awt.event.*;
3 import javax.swing.*;
Con esto importamos todas las clases awt, events y swing.
Estructura del programa
Nuestra clase se llamará Main y nuestro archivo main.class. Este es su esqueleto:
01 public class Main extends JFrame implements ActionListener {
02
03 private JTextField t;
04 private int a = 0, b = 0;
05 private int eq = 0;
06 private char op = 0;
07
08 public Main() {
09 ...
10 }
11
12 public static void main(String[] args) {
13 new Main();
14 }
15
16 public void actionPerformed(ActionEvent e) {
17 ...
18 }
19 }
Como se puede ver, nuestra clase extiende JFrame e implementa la interface
ActionListener que nos obliga a implementar el método actionPerformed (click en
botón).
Se tienen atributos privados, el primero un cuadro de texto, los demas contadores
y variables de control.
Luego tenemos el constructor de la clase, que nos servirá para crear la interfaz y
asignar eventos a los controles correspondientes (lo veremos ahora mismo).
Luego tenemos un método estatico especial llamado main (en minúsculas) que
nos permite ejecutar la calculadora.
Y por último un evento para capturar los clicks del usuario sobre los diferentes
botones de la calculadora.
Creando la interfaz
Dentro del constructor podemos ver este código:
01 super("Calculadora Básica");
02
StringlabelButtons[] =
{"7", "8", "9", "/", "4", "5", "6", "*", "1", "2","3", "-
", "0", "C", "=", "+"};
03 JPanelcp = (JPanel) this.getContentPane();
04 cp.setLayout(new BorderLayout());
05 JPanel p = new JPanel();
06 p.setLayout(new GridLayout(0, 4));
07 for (int i = 0; i <labelButtons.length; ++i) {
08 JButton button = new JButton(labelButtons[i]);
09 button.addActionListener(this);
10 p.add(button);
11 }
12 t = new JTextField();
13 t.setHorizontalAlignment(JTextField.RIGHT);
14 t.setText("0");
15 cp.add(t, BorderLayout.PAGE_START);
16 cp.add(p, BorderLayout.CENTER);
Primero asignamos el título de la ventana y creamos un vector con los caracteres
de los botones. Si lo notaron tiene un orden algo extraño, esto se debe al
algoritmo que se usa luego para crear los controles recorriendo el vector.
Posteriormente creamos un JPanel y le asignamos un layout tipo grid de 4
columnas, entonces al recorrer el vector vamos agregando a este panel objetos
JButton creados con la etiqueta que obtenemos del item actual del vector y de
paso ya le asignamos el controlador del evento (el mismo objeto, this, hace
referencia a esta misma instancia de la clase Main).
Al salir del ciclo ya tenemos todos los botones, pero nos falta un poco para
terminar el diseño. Creamos un cuadro de texto y le fijamos alineación de texto a
la derecha (será donde se muestren los resultados entre otras cosas). Inicialmente
le asignamos un texto igual a "0".
Al panel principal le colocamos el layoutBorderLayout, agregamos el cuadro de
texto arriba y al centro el panel que contiene todos los botones generados
anteriormente.
Capturando los eventos
Nuestra interfaz nos quedó muy bonita, pero no hace nada. Debemos darle
funcionalidad y esto lo hacemos en el evento que captura los click del usuario
sobre los diferentes botones de la interfaz.
01 public void actionPerformed(ActionEvent e) {
02 char c = ((JButton) e.getSource()).getText().charAt(0);
03 if (c >= '0' && c <= '9') {
04 .... Implementación
05 //Log
06 System.out.print(a);
07 System.out.print(" ");
08 System.out.print(b);
09 ....
10 }
La variable local c se asigna con el caracter que hace referencia al botón pulsado
(ver el contenido del vector de etiquetas de botones que se declara en el
constructor de la clase).
Con esa variable sabremos qué es lo que pulsó el usuario y consecuentemente
deberemos trabajar con dicha orden.
Si es un dígito haremos una cosa, si es un signo de operatoria otra cosa. Si se
trata del signo igual deberemos calcular e informar. Y si es el simbolo C (clear),
simplemente resetearemos la calculadora.

Contenu connexe

Tendances

Tópicos Avanzados de Programación - Unidad 2 componentes y librerias
Tópicos Avanzados de Programación - Unidad 2 componentes y libreriasTópicos Avanzados de Programación - Unidad 2 componentes y librerias
Tópicos Avanzados de Programación - Unidad 2 componentes y libreriasJosé Antonio Sandoval Acosta
 
Memoria Estatica
Memoria EstaticaMemoria Estatica
Memoria EstaticaJ M
 
Programacion Orientada a Objetos - Unidad 2 clases y objetos
Programacion Orientada a Objetos - Unidad 2 clases y objetosProgramacion Orientada a Objetos - Unidad 2 clases y objetos
Programacion Orientada a Objetos - Unidad 2 clases y objetosJosé Antonio Sandoval Acosta
 
Arboles y Colas de Prioridad en Java
Arboles y Colas de Prioridad en JavaArboles y Colas de Prioridad en Java
Arboles y Colas de Prioridad en JavaLupitaOMG Garmendia
 
Proyecto calculadora
Proyecto calculadoraProyecto calculadora
Proyecto calculadoraivan ramirez
 
Ejercicios resueltos diagramas de claseaula (1)
Ejercicios resueltos diagramas de claseaula (1)Ejercicios resueltos diagramas de claseaula (1)
Ejercicios resueltos diagramas de claseaula (1)William Lozano
 
Presentacion sistemas numericos
Presentacion sistemas numericosPresentacion sistemas numericos
Presentacion sistemas numericosHenry Paz
 
Ejercicios resueltos de programacion
Ejercicios resueltos de programacionEjercicios resueltos de programacion
Ejercicios resueltos de programacionJaime amambal
 
Ejemplos Para Dev C++
Ejemplos Para Dev C++Ejemplos Para Dev C++
Ejemplos Para Dev C++cemayoral
 
Diagrama de Flujos Ejemplos.
Diagrama de Flujos Ejemplos.Diagrama de Flujos Ejemplos.
Diagrama de Flujos Ejemplos.luismarlmg
 
Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)Juan Astudillo
 
Problemas de diseño de base de datos
Problemas de diseño de base de datosProblemas de diseño de base de datos
Problemas de diseño de base de datosgonzalopomboza
 
Ejemplo de Normalización
Ejemplo de Normalización Ejemplo de Normalización
Ejemplo de Normalización Martha
 

Tendances (20)

Tópicos Avanzados de Programación - Unidad 2 componentes y librerias
Tópicos Avanzados de Programación - Unidad 2 componentes y libreriasTópicos Avanzados de Programación - Unidad 2 componentes y librerias
Tópicos Avanzados de Programación - Unidad 2 componentes y librerias
 
Memoria Estatica
Memoria EstaticaMemoria Estatica
Memoria Estatica
 
BASE DE DATOS
BASE DE DATOSBASE DE DATOS
BASE DE DATOS
 
Programacion Orientada a Objetos - Unidad 2 clases y objetos
Programacion Orientada a Objetos - Unidad 2 clases y objetosProgramacion Orientada a Objetos - Unidad 2 clases y objetos
Programacion Orientada a Objetos - Unidad 2 clases y objetos
 
Arboles y Colas de Prioridad en Java
Arboles y Colas de Prioridad en JavaArboles y Colas de Prioridad en Java
Arboles y Colas de Prioridad en Java
 
Proyecto calculadora
Proyecto calculadoraProyecto calculadora
Proyecto calculadora
 
Ejercicios resueltos diagramas de claseaula (1)
Ejercicios resueltos diagramas de claseaula (1)Ejercicios resueltos diagramas de claseaula (1)
Ejercicios resueltos diagramas de claseaula (1)
 
Presentacion sistemas numericos
Presentacion sistemas numericosPresentacion sistemas numericos
Presentacion sistemas numericos
 
Ejercicios resueltos de programacion
Ejercicios resueltos de programacionEjercicios resueltos de programacion
Ejercicios resueltos de programacion
 
Ejemplos Para Dev C++
Ejemplos Para Dev C++Ejemplos Para Dev C++
Ejemplos Para Dev C++
 
Estructura de Datos - Unidad 6 Metodos de busqueda
Estructura de Datos - Unidad 6 Metodos de busquedaEstructura de Datos - Unidad 6 Metodos de busqueda
Estructura de Datos - Unidad 6 Metodos de busqueda
 
Ejercicios Entidad - Relación
Ejercicios Entidad - RelaciónEjercicios Entidad - Relación
Ejercicios Entidad - Relación
 
Recursividad directa e indirecta
Recursividad directa e indirectaRecursividad directa e indirecta
Recursividad directa e indirecta
 
Ejercicios del 1 al 9
Ejercicios del 1 al 9Ejercicios del 1 al 9
Ejercicios del 1 al 9
 
Diagrama de Flujos Ejemplos.
Diagrama de Flujos Ejemplos.Diagrama de Flujos Ejemplos.
Diagrama de Flujos Ejemplos.
 
Ejercicios sql
Ejercicios sqlEjercicios sql
Ejercicios sql
 
Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)
 
Problemas de diseño de base de datos
Problemas de diseño de base de datosProblemas de diseño de base de datos
Problemas de diseño de base de datos
 
Estructura secuencial
Estructura secuencialEstructura secuencial
Estructura secuencial
 
Ejemplo de Normalización
Ejemplo de Normalización Ejemplo de Normalización
Ejemplo de Normalización
 

Similaire à Programa calculadora

Similaire à Programa calculadora (20)

Programación i
Programación iProgramación i
Programación i
 
Mini Tutorial De Matlab
Mini Tutorial De MatlabMini Tutorial De Matlab
Mini Tutorial De Matlab
 
Interfaces Usuario 3
Interfaces Usuario 3Interfaces Usuario 3
Interfaces Usuario 3
 
C sharp manual
C sharp manualC sharp manual
C sharp manual
 
C sharp manual
C sharp manualC sharp manual
C sharp manual
 
C sharp manual[1]
C sharp manual[1]C sharp manual[1]
C sharp manual[1]
 
C# calculadora
C# calculadoraC# calculadora
C# calculadora
 
C sharp manual
C sharp manualC sharp manual
C sharp manual
 
Informe de eventos topicos avanzados de programacion.
Informe de eventos topicos avanzados de programacion.Informe de eventos topicos avanzados de programacion.
Informe de eventos topicos avanzados de programacion.
 
Practicas en matlab
Practicas en matlabPracticas en matlab
Practicas en matlab
 
151442532 tutorial-de-c
151442532 tutorial-de-c151442532 tutorial-de-c
151442532 tutorial-de-c
 
software para cálculos matemáticos
software para cálculos matemáticos software para cálculos matemáticos
software para cálculos matemáticos
 
Examen programación
Examen programaciónExamen programación
Examen programación
 
Ejemplos de pseudocódigo
Ejemplos de pseudocódigoEjemplos de pseudocódigo
Ejemplos de pseudocódigo
 
Auto play
Auto playAuto play
Auto play
 
Java tema06a
Java tema06aJava tema06a
Java tema06a
 
Ejemplo j internalframe_gine
Ejemplo j internalframe_gineEjemplo j internalframe_gine
Ejemplo j internalframe_gine
 
Informe Tecnico Topicos Avanzados de Programacion
 Informe Tecnico Topicos Avanzados de Programacion Informe Tecnico Topicos Avanzados de Programacion
Informe Tecnico Topicos Avanzados de Programacion
 
2 interfaces graficas_de_usuario (1)
2 interfaces graficas_de_usuario (1)2 interfaces graficas_de_usuario (1)
2 interfaces graficas_de_usuario (1)
 
Como crear un macro
Como crear un macroComo crear un macro
Como crear un macro
 

Plus de jbersosa

Las excepciones standar
Las excepciones standarLas excepciones standar
Las excepciones standarjbersosa
 
Mas sobre excepciones
Mas sobre excepcionesMas sobre excepciones
Mas sobre excepcionesjbersosa
 
Estructuras de control try catch
Estructuras de control try catchEstructuras de control try catch
Estructuras de control try catchjbersosa
 
Clasen1java
Clasen1javaClasen1java
Clasen1javajbersosa
 
Programación java1
Programación java1Programación java1
Programación java1jbersosa
 
Tercercortesistop
TercercortesistopTercercortesistop
Tercercortesistopjbersosa
 
Encapsulacion
EncapsulacionEncapsulacion
Encapsulacionjbersosa
 
Administracion de la memoria principal
Administracion de  la memoria principalAdministracion de  la memoria principal
Administracion de la memoria principaljbersosa
 
Auditoria 2
Auditoria 2Auditoria 2
Auditoria 2jbersosa
 
Auditoriasistemasi 150703002656-lva1-app6891
Auditoriasistemasi 150703002656-lva1-app6891Auditoriasistemasi 150703002656-lva1-app6891
Auditoriasistemasi 150703002656-lva1-app6891jbersosa
 
Auditoria informatica
Auditoria informaticaAuditoria informatica
Auditoria informaticajbersosa
 
Auditoria de sistemas (1)
Auditoria de sistemas (1)Auditoria de sistemas (1)
Auditoria de sistemas (1)jbersosa
 
Auditoría de sistemas de información presentación
Auditoría de sistemas de información presentaciónAuditoría de sistemas de información presentación
Auditoría de sistemas de información presentaciónjbersosa
 
Realizar investigación y hacer un análisis por cada tema asignado al particip...
Realizar investigación y hacer un análisis por cada tema asignado al particip...Realizar investigación y hacer un análisis por cada tema asignado al particip...
Realizar investigación y hacer un análisis por cada tema asignado al particip...jbersosa
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativosjbersosa
 
Estructura de una red
Estructura de una redEstructura de una red
Estructura de una redjbersosa
 
Proyectodeprogramacinidesegundocorte2015 2
Proyectodeprogramacinidesegundocorte2015 2Proyectodeprogramacinidesegundocorte2015 2
Proyectodeprogramacinidesegundocorte2015 2jbersosa
 
Bases de datos mysql y repotes usando jasper report
Bases de datos mysql y repotes usando jasper reportBases de datos mysql y repotes usando jasper report
Bases de datos mysql y repotes usando jasper reportjbersosa
 

Plus de jbersosa (20)

Las excepciones standar
Las excepciones standarLas excepciones standar
Las excepciones standar
 
Mas sobre excepciones
Mas sobre excepcionesMas sobre excepciones
Mas sobre excepciones
 
Estructuras de control try catch
Estructuras de control try catchEstructuras de control try catch
Estructuras de control try catch
 
Main
MainMain
Main
 
Clasen1java
Clasen1javaClasen1java
Clasen1java
 
Programación java1
Programación java1Programación java1
Programación java1
 
Tercercortesistop
TercercortesistopTercercortesistop
Tercercortesistop
 
Encapsulacion
EncapsulacionEncapsulacion
Encapsulacion
 
Administracion de la memoria principal
Administracion de  la memoria principalAdministracion de  la memoria principal
Administracion de la memoria principal
 
Auditoria 2
Auditoria 2Auditoria 2
Auditoria 2
 
Auditoriasistemasi 150703002656-lva1-app6891
Auditoriasistemasi 150703002656-lva1-app6891Auditoriasistemasi 150703002656-lva1-app6891
Auditoriasistemasi 150703002656-lva1-app6891
 
Auditoria informatica
Auditoria informaticaAuditoria informatica
Auditoria informatica
 
Auditoria de sistemas (1)
Auditoria de sistemas (1)Auditoria de sistemas (1)
Auditoria de sistemas (1)
 
Auditoría de sistemas de información presentación
Auditoría de sistemas de información presentaciónAuditoría de sistemas de información presentación
Auditoría de sistemas de información presentación
 
Realizar investigación y hacer un análisis por cada tema asignado al particip...
Realizar investigación y hacer un análisis por cada tema asignado al particip...Realizar investigación y hacer un análisis por cada tema asignado al particip...
Realizar investigación y hacer un análisis por cada tema asignado al particip...
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
 
Php
PhpPhp
Php
 
Estructura de una red
Estructura de una redEstructura de una red
Estructura de una red
 
Proyectodeprogramacinidesegundocorte2015 2
Proyectodeprogramacinidesegundocorte2015 2Proyectodeprogramacinidesegundocorte2015 2
Proyectodeprogramacinidesegundocorte2015 2
 
Bases de datos mysql y repotes usando jasper report
Bases de datos mysql y repotes usando jasper reportBases de datos mysql y repotes usando jasper report
Bases de datos mysql y repotes usando jasper report
 

Programa calculadora

  • 1. Programa Calculadora Por cuestiones de espacio y legibilidad el código fuente de la calculadora en java se muestra en porciones. Para crear la calculadora de la imágen anterior debemos tener en cuenta la interfaz y los eventos. Lo ideal es mantener el código que permite los cálculos en una clase separada, pero aqui todo se realizará en una única clase. Para comenzar a trabajar con componentes gráficos y eventos debemos agregar al inicio del archivo de la clase las siguientes inclusiones: 1 import java.awt.*; 2 import java.awt.event.*; 3 import javax.swing.*; Con esto importamos todas las clases awt, events y swing. Estructura del programa Nuestra clase se llamará Main y nuestro archivo main.class. Este es su esqueleto: 01 public class Main extends JFrame implements ActionListener { 02 03 private JTextField t; 04 private int a = 0, b = 0; 05 private int eq = 0;
  • 2. 06 private char op = 0; 07 08 public Main() { 09 ... 10 } 11 12 public static void main(String[] args) { 13 new Main(); 14 } 15 16 public void actionPerformed(ActionEvent e) { 17 ... 18 } 19 } Como se puede ver, nuestra clase extiende JFrame e implementa la interface ActionListener que nos obliga a implementar el método actionPerformed (click en botón). Se tienen atributos privados, el primero un cuadro de texto, los demas contadores y variables de control. Luego tenemos el constructor de la clase, que nos servirá para crear la interfaz y asignar eventos a los controles correspondientes (lo veremos ahora mismo). Luego tenemos un método estatico especial llamado main (en minúsculas) que nos permite ejecutar la calculadora. Y por último un evento para capturar los clicks del usuario sobre los diferentes botones de la calculadora. Creando la interfaz Dentro del constructor podemos ver este código: 01 super("Calculadora Básica"); 02 StringlabelButtons[] = {"7", "8", "9", "/", "4", "5", "6", "*", "1", "2","3", "- ", "0", "C", "=", "+"}; 03 JPanelcp = (JPanel) this.getContentPane(); 04 cp.setLayout(new BorderLayout()); 05 JPanel p = new JPanel();
  • 3. 06 p.setLayout(new GridLayout(0, 4)); 07 for (int i = 0; i <labelButtons.length; ++i) { 08 JButton button = new JButton(labelButtons[i]); 09 button.addActionListener(this); 10 p.add(button); 11 } 12 t = new JTextField(); 13 t.setHorizontalAlignment(JTextField.RIGHT); 14 t.setText("0"); 15 cp.add(t, BorderLayout.PAGE_START); 16 cp.add(p, BorderLayout.CENTER); Primero asignamos el título de la ventana y creamos un vector con los caracteres de los botones. Si lo notaron tiene un orden algo extraño, esto se debe al algoritmo que se usa luego para crear los controles recorriendo el vector. Posteriormente creamos un JPanel y le asignamos un layout tipo grid de 4 columnas, entonces al recorrer el vector vamos agregando a este panel objetos JButton creados con la etiqueta que obtenemos del item actual del vector y de paso ya le asignamos el controlador del evento (el mismo objeto, this, hace referencia a esta misma instancia de la clase Main). Al salir del ciclo ya tenemos todos los botones, pero nos falta un poco para terminar el diseño. Creamos un cuadro de texto y le fijamos alineación de texto a la derecha (será donde se muestren los resultados entre otras cosas). Inicialmente le asignamos un texto igual a "0". Al panel principal le colocamos el layoutBorderLayout, agregamos el cuadro de texto arriba y al centro el panel que contiene todos los botones generados anteriormente. Capturando los eventos Nuestra interfaz nos quedó muy bonita, pero no hace nada. Debemos darle funcionalidad y esto lo hacemos en el evento que captura los click del usuario sobre los diferentes botones de la interfaz. 01 public void actionPerformed(ActionEvent e) { 02 char c = ((JButton) e.getSource()).getText().charAt(0); 03 if (c >= '0' && c <= '9') {
  • 4. 04 .... Implementación 05 //Log 06 System.out.print(a); 07 System.out.print(" "); 08 System.out.print(b); 09 .... 10 } La variable local c se asigna con el caracter que hace referencia al botón pulsado (ver el contenido del vector de etiquetas de botones que se declara en el constructor de la clase). Con esa variable sabremos qué es lo que pulsó el usuario y consecuentemente deberemos trabajar con dicha orden. Si es un dígito haremos una cosa, si es un signo de operatoria otra cosa. Si se trata del signo igual deberemos calcular e informar. Y si es el simbolo C (clear), simplemente resetearemos la calculadora.