-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathParcial2RES
154 lines (134 loc) · 3.24 KB
/
Parcial2RES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
{Bienvenidos al entorno CMRE.
Lo siguiente es un código de ejemplo que implementa un
proceso que recibe un número de avenida como parámetro,
se posiciona en esa avenida y la recorre.}
programa ejemplo
procesos
proceso soltarPapeles (ES cant: numero)
comenzar
mientras (HayPapelEnLaBolsa)
depositarPapel
fin
proceso tomarPapeles (ES cant: numero)
comenzar
mientras (HayPapelEnLaEsquina)
tomarPapel
cant:=cant+1
fin
proceso SubirEscalon(E alto: numero ; E ancho: numero ; ES cantPapeles: numero)
comenzar
repetir alto
tomarPapeles (cantPapeles)
mover
derecha
repetir ancho
tomarPapeles (cantPapeles)
mover
fin
areas
areaInicioF: AreaP (1,1,1,1)
areaEscalableR1: AreaP(2,1, 12, 13)
areaEscalableR2: AreaP(32,1, 42, 13)
areaEscalableR3: AreaP(62,1,73, 13)
areaDeposito: AreaPC(100,100,100,100)
robots
robot Papelero
variables
cantPapeles: numero
altoEscalon, anchoEscalon: numero
id: numero
miAv, miCa: numero
escalonessubidos: numero
listo: boolean
comenzar
escalonessubidos:=0
cantPapeles:=0
miAv:=PosAv
miCa:=PosCa
listo:=F
RecibirMensaje(id, RF)
repetir 3
RecibirMensaje(altoEscalon, RF)
RecibirMensaje(anchoEscalon, RF)
SubirEscalon(altoEscalon, anchoEscalon, cantPapeles)
repetir 3
derecha
BloquearEsquina(100,100)
Pos(100,100)
mientras (HayPapelEnLaBolsa)
soltarPapeles(cantPapeles)
Pos(miAv,miCa)
LiberarEsquina(100,100)
listo:=V
EnviarMensaje(id, RF)
EnviarMensaje(listo, RF)
EnviarMensaje(cantPapeles, RF)
fin
robot Fiscalizador
variables
id: numero
ancho, alto: numero
listo: boolean
cantMax: numero
miAv, miCa: numero
cantListos: numero
RGanador: numero
cantP: numero
CantGanador: numero
comenzar
RGanador:=0
cantMax:=-1
cantListos:=0
EnviarMensaje(1, R1)
EnviarMensaje(2, R2)
EnviarMensaje(3, R3)
repetir 3
Random(alto, 1,4)
Random(ancho, 1,3)
EnviarMensaje(alto, R1)
EnviarMensaje(ancho, R1)
Random(alto, 1,4)
Random(ancho, 1,3)
EnviarMensaje(alto, R2)
EnviarMensaje(ancho, R2)
Random(alto, 1,4)
Random(ancho, 1,3)
EnviarMensaje(alto, R3)
EnviarMensaje(ancho, R3)
repetir 3
RecibirMensaje(id, *)
RecibirMensaje(listo, *)
si (id = 1)
RecibirMensaje(cantP, R1)
cantListos:=cantListos+1
sino
si (id = 2)
RecibirMensaje (cantP, R2)
cantListos:=cantListos+1
sino
RecibirMensaje(cantP, R3)
cantListos:=cantListos+1
si (cantListos=3)
si (cantP>cantMax)
cantMax:=cantP
RGanador:=id
Informar(RGanador)
fin
variables
R1: Papelero
R2: Papelero
R3: Papelero
RF: Fiscalizador
comenzar
AsignarArea(RF, areaInicioF)
AsignarArea(R1, areaEscalableR1)
AsignarArea(R2, areaEscalableR2)
AsignarArea(R3, areaEscalableR3)
AsignarArea (R1, areaDeposito)
AsignarArea (R2, areaDeposito)
AsignarArea (R3, areaDeposito)
Iniciar(RF, 1,1)
Iniciar(R1, 2,1)
Iniciar(R2, 32,1)
Iniciar(R3, 62,1)
fin