1
內部變量的聲明
狀態圖環境內部的變量使用init關鍵字聲明:
在這個例子中,我們引入了一個名為 var 的變量,類型為 int,初始值為 0。每次狀態圖執行遍歷轉換時,變量將遞增 2。同一作用域中每個變量只能有一個init。
變量初始化的語法為:
varname:=expr0 init expr1
此表達式引入了一個名為 varname 的變量,其初始值在第二個表達式中給出(在 init關鍵字之后)。
從上述表達可以看出關鍵字 init 是用在過渡狀態線上。
2
內部變量聲明的簡化寫法
如果賦值中使用的表達式與用于初始化的表達式相同,則可以使用簡化的語法:
我們在這里介紹兩個變量 x 和 y,它們在傳遞初始轉換時將被分配為零(整數或實數)。
變量的類型取決于用于初始化它的值。例如,在這里,使用文字整數 0 和浮點文字 0.0 分別導致實際類型 int 和 real:類型確定自動執行并最終在整個狀態圖中傳播(任何后續使用 x 和 y 都會傳播所涉及的表達式中的 int 和實數類型約束)。
注意:禁止將 int 變量與實變量混合和匹配。必須使用 to_real 和 to_int 函數進行轉換。Int 常量可以在任何地方用作實常數,但在從初始狀態過渡時。(看到沒 to_real 和 to_int 又是兩個關鍵字)
3
變量的作用范圍
內部變量的作用范圍也即是內部變量的作用域。它們僅在狀態圖的某些部分可見。
變量在其復合狀態下可見,在下面的所有子復合(或并行)狀態下可見。
此示例中有三個不同的聲明變量,一個“y”變量僅在第一個復合狀態下可見,因為用于聲明它的 init 關鍵字位于此狀態內的轉換中。還聲明了兩個同名變量:“x”。一個在頂層和 Composite1 可見;另一個在 Composite2 中聲明,并隱藏先前聲明的變量。由于這種隱藏,Composite2 無法訪問在頂級聲明的變量 x。Composite 1 不會重新定義名為 x 的變量,因此可以訪問在頂級聲明的變量。
注意:狀態圖環境編譯器將在存在變量隱藏的情況下生成警告消息。(警告只是警告,但不是錯誤)
為了簡化不同變量的范圍,下表綜合了不同變量的范圍:
-
轉換器
+關注
關注
27文章
8712瀏覽量
147298 -
信號處理器
+關注
關注
1文章
254瀏覽量
25287 -
有限狀態機
+關注
關注
0文章
52瀏覽量
10347 -
AMESIM
+關注
關注
1文章
15瀏覽量
11736
發布評論請先 登錄
相關推薦
評論