複製鏈接
請複製以下鏈接發送給好友

公共變量

鎖定
公共變量(Public variables)是同一進程族中的進程共同使用的變量。這樣規定有利於程序的模塊化和結構化。公共變量的這一公用規則是由進程族的概念派生出來的。他的和全局變量作用域不一樣啊,全局變量的作用域是整個工程,而類的public變量的作用域只是在類中而已
中文名
公共變量
外文名
Public variables
涉及領域
信息科學
作用域
在任何模塊中都可以使用
格    式
public
初    值
初值均賦以.F.

公共變量公共變量

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

公共變量變量的作用域

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

公共變量公共變量

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

公共變量私有變量

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

公共變量本地變量

本地變量只能在建立它的模塊中使用,而且不管在高層或低層模塊中使用,該模塊運行結束時本地變量就自動釋放。 [2] 
格式: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)對一個對象進行數據綁定時,屬性是可以綁定的,但是公共變量不行。
參考資料
  • 1.    靳桅等編.C語言程序設計:西南交通大學出版社,2001年02月第1版:261
  • 2.    王順利,張云云主編.VISUAL FOXPRO數據庫應用技術:北京理工大學出版社,2013.08:146