หลังจากเรียน Lecture มาพักใหญ่คราวนี้ อาจารย์ได้ให้ลองเขียน Promela บน Spin โดยให้จำลองการทำงานของไฟจราจรขึ้นมาครับ

มันดูไม่น่ายากนะ ลองเขียน Code เลย ได้ Version แรกมาแล้วครับ
1 int redLight = 0;
2 int yellowLight = 0;
3 int greenLight = 0;
4
5 proctype simpleTrafficLight()
6 {
7 //Start with redLight
8 redLight = 1;
9 do
10 ::(redLight ==1) ->
11 redLight = 0;
12 yellowLight = 0;
13 greenLight =1;
14 ::(greenLight ==1) ->
15 redLight = 0;
16 yellowLight = 1;
17 greenLight =0;
18 ::(yellowLight == 1) ->
19 redLight = 1;
20 yellowLight = 0;
21 greenLight =0;
22 od
23 }
24
25
26 init {
27 run simpleTrafficLight()
28 }
- มาดู Automata ครับ

- ทดสอบ Simulate
- ทดสอบ Vertification
Code ดูอ่านยาก เปลี่ยนไปใช้ Enum ดีกว่าครับ
1 mtype = { RED, YELLOW, GREEN } ;
2
3 proctype SimpleTrafficLight() {
4 mtype state = RED;
5 do
6 :: (state == RED) -> state = GREEN;
7 :: (state == GREEN) -> state = YELLOW;
8 :: (state == YELLOW) -> state = RED;
9 od;
10 }
11
12 init {
13 run SimpleTrafficLight();
14 }- มาดู Automata ครับ

- ทดสอบ Simulate
- ทดสอบ Vertification
ตอนนี้ได้รู้เรื่องเกี่ยวกับ Spin หลายเรื่องเลยครับ ^_^
Discover more from naiwaen@DebuggingSoft
Subscribe to get the latest posts sent to your email.



