Skip to content

Pad eteste #1

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 6 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
142 changes: 142 additions & 0 deletions Operações_com_agentes/agentes.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
from pade.core.agent import Agent
from pade.misc.utility import display_message, start_loop

#Operações da calculadora

class AdicaoAgent(Agent):
def __init__(self, aid):
super(AdicaoAgent, self).__init__(aid=aid, debug=False)
display_message(self.aid.localname, 'Adição')

def on_start(self):
pass

def adicao(self, num1, num2):
display_message(self.aid.localname,'Realizando a operação de soma entre os números {} e {}'.format(num1, num2))
try:
resultado = int(num1)+int(num2)
except ValueError:
resultado = float(num1)+float(num2)
display_message(self.aid.localname,'Resultado da operação: {}\n'.format(resultado))
return resultado

def on_message(self, msg):
if msg.body == '+':
num1, num2 = msg.content
result = self.adicao(num1, num2)
msg.respond(result)

class SubtracaoAgent(Agent):
def __init__(self, aid):
super(SubtracaoAgent,self).__init__(aid=aid, debug=False)
display_message(self.aid.localname, 'Subtração')

def on_start(self):
pass

def subtracao(self, num1, num2):
display_message(self.aid.localname,'Realizando a operação de subtração entre os números {} e {}'.format(num1, num2))
try:
resultado = int(num1)-int(num2)
except ValueError:
resultado = float(num1)-float(num2)
display_message(self.aid.localname,'Resultado da operação: {}\n'.format(resultado))
return resultado

def on_message(self, msg):
if msg.body == '-':
num1, num2 = msg.content
result = self.subtracao(num1, num2)
msg.respond(result)

class DivisaoAgent(Agent):
def __init__(self, aid):
super(DivisaoAgent,self).__init__(aid=aid, debug=False)
display_message(self.aid.localname, 'Divisão')

def on_start(self):
pass

def divisao(self, num1, num2):
display_message(self.aid.localname,'Realizando a operação de divisão entre os números {} e {}'.format(num1, num2))
try:
resultado = int(num1)/int(num2)
except ValueError:
resultado = float(num1)/float(num2)
display_message(self.aid.localname,'Resultado da operação: {}\n'.format(resultado))
return resultado

def on_message(self, msg):
if msg.body == '/':
num1, num2 = msg.content
result = self.divisao(num1, num2)
msg.respond(result)

class MultiplicacaoAgent(Agent):
def __init__(self, aid):
super(MultiplicacaoAgent, self).__init__(aid=aid, debug=False)
display_message(self.aid.localname, 'Multiplicação')

def on_start(self):
pass

def multiplicacao(self, num1, num2):
display_message(self.aid.localname,'Realizando a operação de multiplicação entre os números {} e {}'.format(num1, num2))
try:
resultado = int(num1)*int(num2)
except ValueError:
resultado = float(num1)*float(num2)
display_message(self.aid.localname,'Resultado da operação: {}\n'.format(resultado))
return resultado

def on_message(self, msg):
if msg.body == '*':
num1, num2 = msg.content
result = self.multiplicacao(num1, num2)
msg.respond(result)

class ExponenciacaoAgent(Agent):
def __init__(self, aid):
super(ExponenciacaoAgent, self).__init__(aid=aid, debug=False)
display_message(self.aid.localname, 'Exponenciação\n')

def on_start(self):
pass

def exponenciacao(self, num1, num2):
display_message(self.aid.localname,'Realizando a operação de exponenciação entre os números {} e {}'.format(num1, num2))
try:
resultado = int(num1)**int(num2)
except ValueError:
resultado = float(num1)**float(num2)
display_message(self.aid.localname,'Resultado da operação: {}\n'.format(resultado))
return resultado

def on_message(self, msg):
if msg.body == '^':
num1, num2 = msg.content
result = self.exponenciacao(num1, num2)
msg.respond(result)

class RaizAgent(Agent):
def __init__(self, aid):
super(RaizAgent, self).__init__(aid=aid, debug=False)
display_message(self.aid.localname, 'Raiz\n')

def on_start(self):
pass

def raiz(self, num1):
display_message(self.aid.localname,'Realizando a operação de raiz quadrada do número {}'.format(num1))
try:
resultado = int(num1)**1/2
except ValueError:
resultado = float(num1)**1/2
display_message(self.aid.localname,'Resultado da operação: {}\n'.format(resultado))
return resultado

def on_message(self, msg):
if msg.body == 'r':
num1 = msg.content
result = self.raiz(num1)
msg.respond(result)
33 changes: 16 additions & 17 deletions testeAgent.py → Operações_com_agentes/testeAgent.py
Original file line number Diff line number Diff line change
@@ -1,18 +1,16 @@
import re
from sys import argv

from agentes import *
from pade.acl.aid import AID
from pade.core.agent import Agent
from pade.misc.utility import display_message, start_loop

from master import *
from operacoes import *


class MasterAgent(Agent):
def __init__(self, aid):
super().__init__(aid=aid, debug=False)
display_message(self.aid.localname, 'Hello World!')
super(MasterAgent, self).__init__(aid=aid, debug=False)
display_message(self.aid.localname, 'Oi eu sou o agente principal\n')

def on_start(self):
pass
Expand All @@ -26,13 +24,13 @@ def Master(self, expressao):

while parenteses == True:
#Encontra os parenteses
inicio_parenteses, fim_parenteses = buscaParenteses(expressao)
inicio_parenteses, fim_parenteses = self.buscaParenteses(expressao)
if inicio_parenteses != None or fim_parenteses != None:
parenteses = True
#Verifica se tem operação dentro do parentese encontrado
if temOperacao(expressao[inicio_parenteses:fim_parenteses]) != None:
if self.temOperacao(expressao[inicio_parenteses:fim_parenteses]) != None:
#Se houver, identifica a operação, chama a função que calcula aquela expressao e retorna o resultado.
EXPRESSAO_RESOLVIDA, RESULTADO, ADICIONA_SINAL = identificaOperacao(inicio_parenteses, fim_parenteses, expressao)
EXPRESSAO_RESOLVIDA, RESULTADO, ADICIONA_SINAL = self.identificaOperacao(inicio_parenteses, fim_parenteses, expressao)
#Após calcular, substitui na expressao original, a expressão resolvida pelo resultado dela.
if ADICIONA_SINAL == True and RESULTADO>=0:
expressao = expressao.replace(str(EXPRESSAO_RESOLVIDA), '+{}'.format(RESULTADO))
Expand All @@ -41,7 +39,7 @@ def Master(self, expressao):
#Caso não exista operações a serem resolvidas dentro do parentese
else:
#Remove os parenteses da expressao.
exp_sem_parenteses = removeParenteses(expressao[inicio_parenteses:fim_parenteses])
exp_sem_parenteses = self.removeParenteses(expressao[inicio_parenteses:fim_parenteses])
#Remove da expressao original os parenteses.
expressao = expressao.replace(expressao[inicio_parenteses:fim_parenteses], exp_sem_parenteses)
else:
Expand All @@ -52,9 +50,9 @@ def Master(self, expressao):
#Enquanto a expressao não estiver resolvida.
while(resolvida == False):
#Verifica se existe operação
if temOperacao(expressao) != None:
if self.temOperacao(expressao) != None:
#Se houver, identifica a operação, chama a função que calcula aquela expressao e retorna o resultado.
EXPRESSAO_RESOLVIDA, RESULTADO, ADICIONA_SINAL = identificaOperacao(inicio_parenteses, fim_parenteses, expressao)
EXPRESSAO_RESOLVIDA, RESULTADO, ADICIONA_SINAL = self.identificaOperacao(inicio_parenteses, fim_parenteses, expressao)
#Após calcular, substitui na expressao original, a expressão resolvida pelo resultado dela.
if ADICIONA_SINAL == True and RESULTADO>=0:
expressao = expressao.replace(str(EXPRESSAO_RESOLVIDA), '+{}'.format(RESULTADO))
Expand All @@ -66,16 +64,17 @@ def Master(self, expressao):
display_message(self.aid.localname, 'Resultado da expressão: {}'.format(expressao))
return expressao

def on_message(self, msg):
if msg.body == '+':
num1, num2 = msg.content
result = self.adicao(num1, num2)
msg.respond(result)
# def on_message(self, msg):
# if msg.body == '+':
# num1, num2 = msg.content
# result = self.adicao(num1, num2)
# msg.respond(result)


if __name__ == '__main__':
expressao = argv[1]
expressao = expressao.replace(" ", "")
agent_name = 'agente_hello_{}@localhost:{}'.format(1, 1)
expressao = expressao.replace("–", "-")
agent_name = 'agente_resultado_expressao_{}@localhost:{}'.format(1, 1)
agente_hello = MasterAgent(AID(name=agent_name))
agente_hello.Master(expressao)
41 changes: 41 additions & 0 deletions Operações_com_agentes/testes.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
from pade.misc.utility import display_message, start_loop
from pade.core.agent import Agent
from pade.acl.messages import ACLMessage
from pade.acl.aid import AID
from sys import argv


class Remetente(Agent):
def __init__(self, aid):
super(Remetente, self).__init__(aid=aid, debug=False)

def on_start(self):
display_message(self.aid.localname, 'Enviando Mensagem')
message = ACLMessage(ACLMessage.INFORM)
message.add_receiver(AID('destinatario'))
message.set_content('Ola')
self.send(message)

def react(self, message):
pass


class Destinatario(Agent):
def __init__(self, aid):
super(Destinatario, self).__init__(aid=aid, debug=False)

def react(self, message):
display_message(self.aid.localname, 'Mensagem recebida')


if __name__ == '__main__':

agents = list()
remetente_agent = Remetente(AID(name='remetente'))
agents.append(remetente_agent)

destinatario_agent = Destinatario(AID(name='destinatario'))
agents.append(destinatario_agent)


start_loop(agents)
Loading