Skip to content

Latest commit

 

History

History
419 lines (349 loc) · 6.92 KB

File metadata and controls

419 lines (349 loc) · 6.92 KB

R-INFO 🤖

Indice

ciudad1: areaC(1,1,10,10) //área Compartida 
ciudad2: areaP(15,15,20,20) //área Privada
ciudad3: areaPC(30,32,50,51) //área Parcialmente compartida 

Sintaxis

programa programa_x
procesos
  proceso x
  comenzar
    Informar(1)
  fin
areas
  area1: AreaC(1,1,100,100)
robots
  robot tipo1
  comenzar
    x
  fin
variables
  R1: tipo1
comenzar
  AsignarArea (R1,area1)
  Iniciar (R1,1,1)
fin

Juntar_Flores_Papeles

Flores Papeles Flores y Papeles
proceso juntarFlores(ES Flor:numero)
  comenzar
    mientras (HayFlorEnLaEsquina)
      tomarFlor
      Flor:= Flor + 1
  fin
proceso juntarPapeles(ES Papel:numero)
  comenzar
    mientras (HayPapelEnLaEsquina)
      tomarPapel
      Papel:= Papel + 1
  fin
proceso juntarFloresPapeles(ES Flor:numero; ES Papeles: numero)
  comenzar
    mientras (HayFlorEnLaEsquina)
      tomarFlor
      Flor:= Flor + 1
    
    mientras (HayPapelEnLaEsquina)
      tomarPapel
      Papel:= Papel + 1
  fin

Rectangulo

  proceso Rectangulo(E base : numero; E altura : numero;ES cantidad : numero)
  comenzar
    repetir 2
      repetir altura
        juntar_Flores(cantidad)
        mover
      derecha
      repetir base
        juntar_Flores(cantidad)
        mover
      derecha
  fin

JuntarObjetos

  proceso Juntar_Objetos(ES Flor:numero;ES Tiene_Objetos:boolean)
  variables
    av,ca:numero
  comenzar
    av:= PosAv
    ca:= PosCa
    BloquearEsquina(30,30)
    Pos(30,30)
    si HayFlorEnLaEsquina
      tomarFlor
      Flor:=Flor+1
    sino
      si HayPapelEnLaEsquina
        tomarPapel
      sino
        Tiene_Objetos:=F
    Pos(av,ca)  
    LiberarEsquina(30,30)  
  fin

Bucle

BloquearEsquina(PosAv,PosCa)
mientras ~(HayFlorEnLaEsquina)
      BloquearEsquina(PosAv ,PosCa + 1)
      mover
      LiberarEsquina(PosAv,PosCa - 1) 
LiberarEsquina(PosAv,PosCa)

Jefe

1 2
robot robot1
  variables
    altura,ancho,cantFlores : numero
  comenzar
    cantFlores:=0 
    RecibirMensaje(altura,R-JEFE)
    RecibirMensaje(ancho,R-JEFE)
    Rectangulo(ancho,altura,cantFlores) 
    EnviarMensaje (cantFlores,R-JEFE)
  fin
  
  robot robot2
  variables
    cantFlores : numero
    Max:numero
  comenzar
    Max:=-1
    EnviarMensaje (5,R1)
    EnviarMensaje (3,R1)
    EnviarMensaje (8,R2)
    EnviarMensaje (2,R2)
    
    repetir 2
      RecibirMensaje(cantFlores,*)
      si cantFlores > Max
        Max:=cantFlores
    
    Informar('El-Maximo-de-flores-juntadas-es',Max)
  fin
robot tipo1  {tipo trabajador}
  variables
    id,altura,ancho,f:numero
  comenzar
    RecibirMensaje(id,robot3)
    RecibirMensaje(altura,robot3)
    RecibirMensaje(ancho,robot3)
    f:=0
    rectangulo(altura,ancho,f)
    Informar(f)
    EnviarMensaje(id,robot3)
    EnviarMensaje(f,robot3)  
  fin
  
  robot tipo2  {tipo jefe}
  variables
    id,f:numero
  comenzar
    {Envio los ids} 
    EnviarMensaje(1,robot1)
    EnviarMensaje(2,robot2)
    {Envio alto y ancho}
    EnviarMensaje (5,robot1)
    EnviarMensaje (3,robot1)
    EnviarMensaje (8,robot2)
    EnviarMensaje (2,robot2)
    {Informar el id + la cantidad que junto cada trabajador}
    repetir 2
      {Espero el id de un robot que ya termino}
      RecibirMensaje(id,*)
      {Recibo la cantidad de ESE robot}
      si id = 1
        RecibirMensaje(f,robot1)
      sino
        RecibirMensaje(f,robot2)
      Informar(id, f)
  fin

Esquinas_Random

proceso Esquinas_Random(ES flor:numero)
  variables
    av,ca: numero
    x,y:numero
  comenzar
    av:=PosAv
    ca:=PosCa
    repetir 3
      Random(x,0,5)
      Random(y,0,5)
      Pos(av+x,ca+y)
      juntarFlores(flor)
      {Volver a la esq original}
      Pos(av,ca)
  fin

Bloquear

Bloquear 1 Bloquear 2
robot tipo1
  comenzar
    repetir 5 
      mover
    BloquearEsquina(10,10)
    Pos (10,10) 
    Pos (1,1)
    LiberarEsquina(10,10)
  fin 
robot tipo2
  comenzar
    mientras (hayFlorEnLaEsquina)
      tomarFlor
    BloquearEsquina(10,10)
    Pos (10,10)
    Pos (2,2)
    LiberarEsquina(10,10)
  fin 

Identificar_Robots

proceso Identificar_Robots
comenzar
  EnviarMensaje(1,R1)
  EnviarMensaje(2,R2)
  EnviarMensaje(3,R3)
  EnviarMensaje(4,R4)
fin

Mover_Flores

Flores Papeles
proceso TrasladarFlor(ES tiene_flores:boolean)
variables
  av,ca:numero
comenzar
  av:= PosAv
  ca:= PosCa
  BloquearEsquina(10,10)
  Pos(10,10)
  si HayFlorEnLaEsquina
    Mover_Flor(av,ca)
  sino
    tiene_flores:=F
    Pos(av,ca)  
    LiberarEsquina(10,10)  
fin
proceso Mover_Flor(E av:numero; E ca:numero)
comenzar
  tomarFlor
  BloquearEsquina(11,11)    
  Pos(11,11)
  LiberarEsquina(10,10)    
  depositarFlor
  Pos(av,ca)  
  LiberarEsquina(11,11)
fin

Operaciones_RInfo

Sintaxis Definición
Iniciar(robot,posicion) Posiciona al robot en la esquina indicada orientado hacia el norte.
derecha Cambia la orientacion del robot 90° en sentido horario
mover Se mueve derecho en la posicion orientado
tomarFlor,tomarPapel Recoge una flor/papel y la pone en la bolsa
depositarFlor,depositarPapel Deposita una flor/papel de la bolsa y la deposita en la esquina
PosAv,PosCa Nro de avenida/calle actualmente posicionado
HayPapelEnLaEsquina,HayFlorEnLaEsquina Es verdadero si hay al menos un Papel/Flor en la esquina
HayFlorEnLaBolsa,HayPapelEnLaBolsa Si hay al menos una flor/papel en la bolsa
Pos Posiciona al robot Pos(Av,Ca)
Informar Permite mostrar en pantalla el valor de una variable
y &
o barra vertical
no ~
Igualdad =
Menor <
Mayor >
Menor o Igual <=
Mayor o Igual >=
Distinto <>
PosAv,PosCa Toma el valor de la avenida/calle actual
EnviarMensaje(variable,variableRobot)
RecibirMensaje(variable,variableRobot)
RecibirMensaje(variable,*)

Clases

ConcurrenteClase1.mp4