公共變數

公共變數(Public variables)是同一進程族中的進程共同使用的變數。這樣規定有利於程式的模組化和結構化。公共變數的這一公用規則是由進程族的概念派生出來的。他的和全局變數作用域不一樣啊,全局變數的作用域是整個工程,而類的public變數的作用域只是在類中而已

基本介紹

  • 中文名:公共變數
  • 外文名:Public variables
  • 涉及領域:信息科學
  • 作用域: 在任何模組中都可以使用
  • 格式:public<記憶體變數表>
  • 初值:初值均賦以.F.
公共變數,變數的作用域,公共變數,私有變數,本地變數,Matlab如何定義公共變數,局部變數、系統變數和公共變數,統宏程式編程 一 變數,局部變數,公共變數,變數值的範圍,小數點的省略,變數的引用,雙軌跡(雙軌跡控制)的公共變數,公共變數和屬性的區別,前言,屬性,區別,

公共變數

公共變數是同一進程族中的進程共同使用的變數。這樣規定有利於程式的模組化和結構化。如圖所示,假設在進程函式A上活動的進程a與在進程函式B上活動的進程b(a,b屬於同一進程族)共同使用公共變數V,當又在進程函式A、B上創建出新的進程a’,b’時,儘管進程a與a’以及b與b’具有相同的代碼,並且a’與b’的共同變數的變數名也是V,但這個V與a與b的公共變數是不同的實體。
公共變數的這一公用規則是由進程族的概念派生出來的。
公共變數

變數的作用域

程式設計離不開變數。一個變數除了類型和取值之外,還有一個重要的作用就是它的作用域。變數的作用域指的是變數在什麼範圍內是有效的或能夠被訪問的。在VEP中,若以變數的作用域來分,記憶體變數可分為公共變數(也稱為全局變數)、私有變數和本地變數(也稱為局部變數)3類。

公共變數

在任何模組中都可以使用的變數稱為公共變數,公共變數可用下述命令來建立。
格式:public<記憶體變數表>
功能:將記憶體變數表指定的變數設定為公共變數,並將這些變數的初值均賦以.F.。
說明:
(1)若下層模組中建立的記憶體變數要供上層模組使用,或某模組中建立的記憶體變數要供並列模組使用,必須將這種變數說明成公共變數。
(2)VEP默認命令視窗中定義的變數都是公共變數,但這樣定義的變數不能在程式方式下使用。
(3)程式終止執行時,公共變數不會自動清除,而只能用release命令或clear all命令來清除公共變數。

私有變數

VFP默認程式中定義的變數是私有變數,私有變數僅在定義它的模組及其下層模組中有效,而在定義它的模組運行結束時自動清除。
私有變數允許與上層模組的變數同名,但此時為分清兩者是不同的變數,需要採用暫時禁止上級模組變數的方法。下述命令聲明的私有變數就能起這樣的作用。
格式:private[<記憶體變數表>][all[likelexcept<通配符>]]
功能:聲明私有變數並隱藏上級模組的同名變數,直到聲明它的程式、過程或自定義函式執行結束後,才恢復使用先前隱藏的變數。
說明:
(1)“聲明”與“建立”不一樣,前者僅指變數的類型,後者包括類型與值。public命令除聲明變數的類型外還賦了初值,故稱建立;而private並不對變數賦值,僅是聲明而已。
(2)若應用程式由多人同時開發,很可能因變數名相同造成失誤,如果各人將自己所用的變數用private命令來聲明,就能避免發生混淆。
(3)在程式模組調用時,參數接收命令parameters聲明的參變數也是私有變數,與private命令作用相同。

本地變數

本地變數只能在建立它的模組中使用,而且不管在高層或低層模組中使用,該模組運行結束時本地變數就自動釋放。
格式:local<記憶體變數表>
功能:將<記憶體變數表>指定的變數設定為本地變數,並將這些變數的初值均賦以.F.。
注意:local與locate前4個字母相同,故不可縮寫。

Matlab如何定義公共變數

  • 用global定義全局變數,在子函式中也用global申明一下;不推薦
  • 用evalin與assignin進行變數空間之間數據通訊,具體的help之
  • 用saveload通過檔案傳遞。一般不採用,但是對於大量數據傳遞而不用參數的時候還是挺方便
  • 如果是gui,通過appdata,userdata,guidata都可以
  • assignin與evalin
MATLAB通常的基本工作空間是'base'空間。MATLAB在程式運行過程中,將為每個函式分配它自己的函式工作空間(從基本空間中分割出的一塊,以函式名作為其工作空間名),各個工作空間之間的變數是不能夠直接引用的,在函式退出之後,該函式空間也就立即被註銷。而對於腳本M檔案,其工作空間與基本工作空間'base'是共享的。因此,對於函式檔案,運行結果除輸出變數返回到基本工作空間或者其父工作空間(調用該函式的程式的工作空間)之外,其中間變數不在基本工作空間或者其父工作空間保留。而腳本M檔案運行結果,其運算過程中所用到的中間變數也將在基本工作空間'base'中保留。
assignin為工作空間的變數指派值,其語法為:
assignin(WS,'name',V),其中,WS為工作空間名稱,'name'為變數名,V是為該變數指派的值。
evalin實現在工作空間中某個表達式字元串,並將結果返回,其語法為:
evalin(WS,'expression'),其中,WS為工作空間名稱,'expression'為表達式符號串。
利用assignin與evalin指令,可以實現不同M檔案主函式與子函式的工作空間變數的共享,這將在以後的M函式編寫中詳細講到。在這裡僅僅對基本工作內部的操作做一個簡單示例。
例:
clear;%清空當前工作空間
a=3;%在基本工作空間創建一個變數
assignin('base','a',5);%為該變數指派新的值
a%查看現在該變數的值
a=
5
b=evalin('base','3*a+2')%在基本工作空間中計算式子3*a+2的值並將結果賦予b
b=
17

局部變數、系統變數和公共變數

統宏程式編程 一 變數

普通加工程式直接用數值指定G代碼和移動距離;例如,GO1和X100.0。使用用戶宏程式時,數值可以直接指定或用變數指定。當用變數時,變數值可用程式或用MDI面板上的操作改變。
計算機允許使用變數名,用戶宏程式不行。變數用變數符號(#)和後面的變數號指定。

局部變數

局部變數只能用在宏程式中存儲數據,例如,運算結果.當斷電時,局部變數被初始化為空.調用宏程式時,自變數對局部變數賦值, #100-#199 #500-#999

公共變數

公共變數在不同的宏程式中的意義相同.當斷電時,變數#100-#199初始化為空.變數#500-#999的數據保存,即使斷電也不丟失. #1000 系統變數
系統變數用於讀和寫CNC運行時各種數據的變化,例如,刀具的當前位置和補償值.

變數值的範圍

局部變數和公共變數可以有0值或下面範圍中的值: -1047到-10-29或-10-2到-1047
如果計算結果超出有效範圍,則發出P/S報警NO.111.

小數點的省略

當在程式中定義變數值時,小數點可以省略。 例:當定義#1=123;變數#1的實際值是123.000。

變數的引用

  • 為在程式中使用變數值,指定後跟變數號的地址。當用表達式指定變數時,要把表達式放在括弧中。
  • 被引用變數的值根據地址的最小設定單位自動地捨入。
    例如:當G00X#/;以1/1000mm的單位執行時,CNC把123456賦值給變數#1,實際指令值為G00X12346.
  • 改變引用變數的值的符號,要把負號(-)放在#的前面。
    例如:G00X-#1
  • 當引用未定義的變數時,變數及地址都被忽略。
    例如:當變數#1的值是0,並且變數#2的值是空時,G00X#1 Y#2的執行結果為G00X0。

雙軌跡(雙軌跡控制)的公共變數

對雙軌跡控制,系統為每一軌跡都提供了單獨的宏變數,但是,根據參數N0.6036和6037的設定,某些公共變數可同時用於兩個軌跡。

公共變數和屬性的區別

前言

面向對象的目的就是抽象和封裝;在類中,變數是對類本身而言,可以稱之為域,也可以是Private和Public等。屬性是外部顯示出來的特性。雖然可以把域聲明為Public的,但是這么做不利於類的封裝,因為外部使用者可以對類進行直接修改。屬性控制了外部使用者對該域的使用和控制,如何控制,則可以放在類進行封裝。

屬性

屬性更多的體現了對象的封裝性,不直接操作類的數據內容,而是通過訪問器進行訪問。藉助於get和set對屬性進行讀寫和執行語句的操作。屬性還有以下幾個用法:
a) 可以允許在數據更改前驗證數據。
b) 他們可以透明的公開某個類的數據,該類的數據實際上市從其他源數據檢索到的。
c) 當數據被修改時,他們可以採取行動,例如引發事件或者更改其他欄位的值。

區別

兩個有以下區別:
a) 屬性是對欄位的封裝。
b) 屬性可以控制讀寫,而變數不可以。
c) 屬性可以進行賦值操作,變數不可以。
d)對一個對象進行數據綁定時,屬性是可以綁定的,但是公共變數不行。

相關詞條

熱門詞條

聯絡我們