Como ya hemos visto se pueden hacer una calculadora básica en SWI-Prolog con interface gráfica y en Lenguaje de Programación Prolog, ahora en esta publicación te enseño como se hace con un botón de multiplicación y división.
Vamos a seguir editando nuestro código anterior, añadimos una claúsula multiplicación y otra división con los valores correspondientes.
Junto con ello creamos los botones y pasamos los valores necesarios.
Y por último añadimos a la ventana los objetos.
Una vez terminado vamos a poder empezar a utilizar la calculadora básica que hemos creado.
%Vamos a llamar a nuestra libreria grafica
:- use_module(library(pce)).
% Vamos a crear nuestra clausula Suma que va a recibir dos parametros,
% lo que son número1, número2 y el resultado por último que es otro
% parametro que maneja
% Además de recibir los parametros utilizamos atom_number para convertir
% la cadena que hemos leído a número, después realizamos la suma
% Resultado es la suma de los número que hemos convertidos. Y por último
% enviamos el resultado.
suma(N1,N2,R):- atom_number(N1,N1n), atom_number(N2,N2n), Resultado is N1n + N2n, send(R,selection,Resultado).
%Lo mismo podemos hacer con la resta
resta(N1,N2,R):- atom_number(N1,N1n), atom_number(N2,N2n), Resultado is N1n - N2n, send(R,selection,Resultado).
% En el caso de la resta pasa lo mismo pero con haciendo la respectiva
%Creamos la claúsula multiplicación
multiplicacion(N1,N2,R):- atom_number(N1,N1n), atom_number(N2,N2n), Resultado is N1n * N2n, send(R, selection, Resultado).
%Creamos la claúsula división
division(N1, N2, R):- atom_number(N1, N1n), atom_number(N2, N2n), Resultado is N1n / N2n, send(R, selection, Resultado).
% operación
%Ahora vamos a crear nuestra interface gráfica
%
%new = nuevo objeto
%Ventana = Nombre de nuestro objeto
%dialog = tipo de objeto
%Calculadora = titulo que llevara nuestra ventana
:-new(Ventana, dialog('Calculadora')),
%Todo lo que nuestra ventana llevará dentro
%new = Nuevo objeto
%Txt_titulo = Nombre de nuestro objeto
%label = tipo de objeto
%nombre = variable donde se guardará el string
%Calculadora Básica = string del objeto
new(Txt_titulo, label(nombre,'Calculadora Básica')),
%new = Nuevo objeto
%Btn_salir = nombre de nuestro objeto
%button = tipo de objeto boton
%message = se comunica con sistema
%Ventana = objeto que va a manipular
%destroy = instruccion que se dará al sistema
new(Btn_salir, button('Salir', message(Ventana,destroy))),
%new = Nuevo objeto
%Item_num1 = Nombre de nuestro objeto
%text_item = Tipo de objeto
%Primer número = texto que llevará dentro nuestro objeto
new(Item_num1, text_item('Primer Número')),
%new = Nuevo objeto
%Item_num2 = Nombre de nuestro objeto
%text_item = Tipo de objeto
%Primer número = texto que llevará dentro nuestro objeto
new(Item_num2, text_item('Segundo Número')),
%new = Nuevo objeto
%Item_num1 = Nombre de nuestro objeto
%text_item = Tipo de objeto
%Primer número = texto que llevará dentro nuestro objeto
new(Item_resl, text_item('Resultado')),
%new = Nuevo objeto
%Btn_sumar = nombre de nuestro objeto
%button = tipo de objeto boton
%message = se comunica con sistema
%@prolog = se va a comunicar con el sistema de prolog
%suma = hace referencia a la claúsula suma
%Item_num1?selection = hace referencia a pasar el valor dentro del text_item a la claúsula suma como en una función
%Item_num2?selection = pasa el valor a la clapusula suma
%Item_resl = pasa el valor que se recupera despues de ejecutar suma
new(Btn_suma, button('Suma', message(@prolog, suma, Item_num1?selection, Item_num2?selection, Item_resl))),
%new = Nuevo objeto
%Btn_sumar = nombre de nuestro objeto
%button = tipo de objeto boton
%message = se comunica con sistema
%@prolog = se va a comunicar con el sistema de prolog
%suma = hace referencia a la claúsula suma
%Item_num1?selection = hace referencia a pasar el valor dentro del text_item a la claúsula resta como en una función
%Item_num2?selection = pasa el valor a la clapusula suma
%Item_resl = pasa el valor que se recupera despues de ejecutar resta
new(Btn_resta, button('Resta', message(@prolog, resta, Item_num1?selection, Item_num2?selection, Item_resl))),
%Vamos a crear un boton para la multiplicación siguiendo el código anterior
new(Btn_multiplicacion, button('Multiplicar', message(@prolog, multiplicacion, Item_num1?selection, Item_num2?selection, Item_resl))),
%Ahora vamos a crear el boton de división
new(Btn_division, button('Dividir', message(@prolog, division, Item_num1?selection, Item_num2?selection, Item_resl))),
%send = manipular de objeto
%Ventana = objeto donde se va a manipular
%append = intrucción para añadir
%Txt_titulo = objeto que se manipula
send(Ventana, append, Txt_titulo),
%send = manipular de objeto
%Ventana = objeto donde se va a manipular
%append = intrucción para añadir
%Item_num1 = objeto que se manipula
send(Ventana, append, Item_num1),
%send = manipular de objeto
%Ventana = objeto donde se va a manipular
%append = intrucción para añadir
%Item_num2 = objeto que se manipula
send(Ventana, append, Item_num2),
%send = manipular de objeto
%Ventana = objeto donde se va a manipular
%append = intrucción para añadir
%Item_resl = objeto que se manipula
send(Ventana, append, Item_resl),
%send = manipular de objeto
%Ventana = objeto donde se va a manipular
%append = intrucción para añadir
%Btn_suma = objeto que se manipula
send(Ventana, append, Btn_suma),
%send = manipular de objeto
%Ventana = objeto donde se va a manipular
%append = intrucción para añadir
%Btn_resta = objeto que se manipula
send(Ventana, append, Btn_resta),
%Vamos a añadir el boton multiplicar
send(Ventana, append, Btn_multiplicacion),
%vamos a añadir el boton dividir
send(Ventana, append, Btn_division),
%send = manipular de objeto
%Ventana = objeto donde se va a manipular
%append = intrucción para añadir
%Btn_salir = objeto que se manipula
send(Ventana, append, Btn_salir),
%send = manipular de objeto
%Ventana = objeto donde se va a manipular
%open = intrucción para abrir ventana
send(Ventana,open).
Descarga los archivos del proyecto en el siguiente:
Enlace
Comentarios
Publicar un comentario