SlideShare una empresa de Scribd logo
1 de 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.

Más contenido relacionado

La actualidad más candente

Leer vector de 10 numeros flotantes y mostrarlo en pantalla DEV C++
Leer vector de 10 numeros flotantes y mostrarlo en pantalla DEV C++Leer vector de 10 numeros flotantes y mostrarlo en pantalla DEV C++
Leer vector de 10 numeros flotantes y mostrarlo en pantalla DEV C++
Eli Diaz
 
02 Ejercicios Resueltos diagramas de flujo
02 Ejercicios Resueltos diagramas de flujo02 Ejercicios Resueltos diagramas de flujo
02 Ejercicios Resueltos diagramas de flujo
Tete Alar
 
Lenguaje Borland C - Estructuras Secuenciales y No Secuenciales
Lenguaje Borland C - Estructuras Secuenciales y No SecuencialesLenguaje Borland C - Estructuras Secuenciales y No Secuenciales
Lenguaje Borland C - Estructuras Secuenciales y No Secuenciales
Karina Arguedas Ruelas
 
Java script(diapositivas)
Java script(diapositivas) Java script(diapositivas)
Java script(diapositivas)
Roberto Mejia
 
Taller de algoritmos
Taller de algoritmosTaller de algoritmos
Taller de algoritmos
10-02
 

La actualidad más candente (20)

Comandos java
Comandos javaComandos java
Comandos java
 
HA2NV50 EQ8-StarUML
HA2NV50 EQ8-StarUMLHA2NV50 EQ8-StarUML
HA2NV50 EQ8-StarUML
 
Que Es Java
Que Es JavaQue Es Java
Que Es Java
 
Leer vector de 10 numeros flotantes y mostrarlo en pantalla DEV C++
Leer vector de 10 numeros flotantes y mostrarlo en pantalla DEV C++Leer vector de 10 numeros flotantes y mostrarlo en pantalla DEV C++
Leer vector de 10 numeros flotantes y mostrarlo en pantalla DEV C++
 
Framework Laravel
Framework LaravelFramework Laravel
Framework Laravel
 
Topicos Avanzados de Programacion - Unidad 3 componentes y librerias
Topicos Avanzados de Programacion - Unidad 3 componentes y libreriasTopicos Avanzados de Programacion - Unidad 3 componentes y librerias
Topicos Avanzados de Programacion - Unidad 3 componentes y librerias
 
Ejercicios resueltos pascal
Ejercicios resueltos pascalEjercicios resueltos pascal
Ejercicios resueltos pascal
 
Calculadora
CalculadoraCalculadora
Calculadora
 
Tutorial de CodeBlocks
Tutorial de CodeBlocksTutorial de CodeBlocks
Tutorial de CodeBlocks
 
COMANDOS DE JAVA
COMANDOS DE JAVACOMANDOS DE JAVA
COMANDOS DE JAVA
 
02 Ejercicios Resueltos diagramas de flujo
02 Ejercicios Resueltos diagramas de flujo02 Ejercicios Resueltos diagramas de flujo
02 Ejercicios Resueltos diagramas de flujo
 
Taller: Prueba Unitaria con JUnit en NetBeans
Taller: Prueba Unitaria con JUnit en NetBeansTaller: Prueba Unitaria con JUnit en NetBeans
Taller: Prueba Unitaria con JUnit en NetBeans
 
Lenguaje Borland C - Estructuras Secuenciales y No Secuenciales
Lenguaje Borland C - Estructuras Secuenciales y No SecuencialesLenguaje Borland C - Estructuras Secuenciales y No Secuenciales
Lenguaje Borland C - Estructuras Secuenciales y No Secuenciales
 
Java 8 introducción a expresiones lambdas y api stream
Java 8  introducción a expresiones lambdas y api streamJava 8  introducción a expresiones lambdas y api stream
Java 8 introducción a expresiones lambdas y api stream
 
Logica de la Programación Problemas y Soluciones
Logica de la  Programación  Problemas y SolucionesLogica de la  Programación  Problemas y Soluciones
Logica de la Programación Problemas y Soluciones
 
Lenguaje de programacion de visual basic
Lenguaje de programacion de visual basicLenguaje de programacion de visual basic
Lenguaje de programacion de visual basic
 
Java script(diapositivas)
Java script(diapositivas) Java script(diapositivas)
Java script(diapositivas)
 
Taller de algoritmos
Taller de algoritmosTaller de algoritmos
Taller de algoritmos
 
Java 8 Lambda and Streams
Java 8 Lambda and StreamsJava 8 Lambda and Streams
Java 8 Lambda and Streams
 
Ejemplo de Trigger en Mysql
Ejemplo de Trigger en MysqlEjemplo de Trigger en Mysql
Ejemplo de Trigger en Mysql
 

Similar a Programa calculadora

Mini Tutorial De Matlab
Mini Tutorial De MatlabMini Tutorial De Matlab
Mini Tutorial De Matlab
guestdb8ea2b
 
Interfaces Usuario 3
Interfaces Usuario 3Interfaces Usuario 3
Interfaces Usuario 3
Milaly
 
Practicas en matlab
Practicas en matlabPracticas en matlab
Practicas en matlab
bachispasaca
 
Ejemplo j internalframe_gine
Ejemplo j internalframe_gineEjemplo j internalframe_gine
Ejemplo j internalframe_gine
hrgamaliel
 
Informe Tecnico Topicos Avanzados de Programacion
 Informe Tecnico Topicos Avanzados de Programacion Informe Tecnico Topicos Avanzados de Programacion
Informe Tecnico Topicos Avanzados de Programacion
AnaMaari
 

Similar a 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
 

Más de jbersosa

Auditoriasistemasi 150703002656-lva1-app6891
Auditoriasistemasi 150703002656-lva1-app6891Auditoriasistemasi 150703002656-lva1-app6891
Auditoriasistemasi 150703002656-lva1-app6891
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ón
jbersosa
 
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
 
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
jbersosa
 

Más 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.