㈠ 程序開發中各種常用的方法都有哪些
創建一條新線程,並將其壓棧, 並返回維護這個線程的 lua_State 指針。 這個函數返回的新線程共享原線程的全局環境, 但是它有獨立的運行棧。
沒有顯式的函數可以用來關閉或銷毀掉一個線程。 線程跟其它 Lua 對象一樣是垃圾收集的條目之一。
當給定索引的值是一個數字,或是一個可轉換為數字的字元串時,返回 1 ,否則返回 0 。
lua_isstring
[-0, +0, –]
int lua_isstring (lua_State *L, int index);
當給定索引的值是一個字元串或是一個數字 (數字總能轉換成字元串)時,返回 1 ,否則返回 0 。
lua_istable
[-0, +0, –]
int lua_istable (lua_State *L, int index);
當給定索引的值是一張表時,返回 1 ,否則返回 0 。
lua_isthread
[-0, +0, –]
int lua_isthread (lua_State *L, int index);
當給定索引的值是一條線程時,返回 1 ,否則返回 0 。
lua_isuserdata
[-0, +0, –]
int lua_isuserdata (lua_State *L, int index);
當給定索引的值是一個用戶數據(無論是完全的還是輕量的)時, 返回 1 ,否則返回 0 。
lua_isyieldable
[-0, +0, –]
int lua_isyieldable (lua_State *L);
如果給定的協程可以讓出,返回 1 ,否則返回 0 。
lua_KContext
typedef ... lua_KContext;
延續函數上下文參數的類型。 這一定是一個數字類型。 當有 intptr_t 時,被定義為 intptr_t , 因此它也可以保存指針。 否則,它被定義為 ptrdiff_t。
lua_KFunction
typedef int (*lua_KFunction) (lua_State *L, int status, lua_KContext ctx);
延續函數的類型
載入一段 Lua 代碼塊,但不運行它。 如果沒有錯誤, lua_load 把一個編譯好的代碼塊作為一個 Lua 函數壓到棧頂。 否則,壓入錯誤消息。
lua_load 的返回值可以是:
LUA_OK: 沒有錯誤;
LUA_ERRSYNTAX: 在預編譯時碰到語法錯誤;
LUA_ERRMEM: 內存分配錯誤;
LUA_ERRGCMM: 在運行 __gc 元方法時出錯了。 (這個錯誤和代碼塊載入過程無關,它是由垃圾收集器引發的。)
lua_load 函數使用一個用戶提供的 reader 函數來讀取代碼塊()。 data 參數會被傳入 reader 函數。
chunkname 這個參數可以賦予代碼塊一個名字, 這個名字被用於出錯信息和調試信息()。
lua_load 會自動檢測代碼塊是文本的還是二進制的, 然後做對應的載入操作(參見程序 luac )。 字元串 mode 的作用和函數 load 一致。 它還可以是 NULL 等價於字元串 "bt"。
lua_load 的內部會使用棧, 因此 reader 函數必須永遠在每次返回時保留棧的原樣。
如果返回的函數有上值, 第一個上值會被設置為 保存在注冊表(5) LUA_RIDX_GLOBALS 索引處的全局環境。 在載入主代碼塊時,這個上值是 _ENV 變數()。 其它上值均被初始化為 nil。
lua_newstate
[-0, +0, –]
lua_State *lua_newstate (lua_Alloc f, void *ud);
創建一個運行在新的獨立的狀態機中的線程。 如果無法創建線程或狀態機(由於內存有限)則返回 NULL。 參數 f 是一個分配器函數; Lua 將通過這個函數做狀態機內所有的內存分配操作。 第二個參數 ud ,這個指針將在每次調用分配器時被轉入。
㈡ 目前常用的兩種程序設計方法是
A、結構化程序設計和面向對象程序設計。
結構化程序設計(structured programming)是進行以模塊功能和處理過程設計為主的詳細設計的基本原則。結構化程序設計是過程式程序設計的一個子集,它對寫入的程序使用邏輯結構,使得理解和修改更有效更容易。
而面向對象程序設計(Object Oriented Programming)作為一種新方法,其本質是以建立模型體現出來的抽象思維過程和面向對象的方法。
(2)常用的程序編制方法有哪幾種擴展閱讀:
結構化程序設計的原則:
結構化程序設計採用自頂向下、逐步求精的設計方法,各個模塊通過「順序、選擇、循環」的控制結構進行連接,並且只有一個入口、一個出口。
結構化程序設計的原則可表示為:程序=(演算法)+(數據結構)。
演算法是一個獨立的整體,數據結構(包含數據類型與數據)也是一個獨立的整體。兩者分開設計,以演算法(函數或過程)為主。
隨著計算機技術的發展,軟體工程師越來越注重於系統整體關系的表述,於是出現了數據模型技術(把數據結構與演算法看做一個獨立功能模塊),這便是面向對象程序設計的雛形。
㈢ 數控機床加工程序的編制方法有哪些
數控編程大體經過了機器語言編程、高級語言編程、代碼格式編程和人機對話編程與動態模擬這樣幾個階段。在上個世紀70年代,美國電子工業協會(EIA)和國際標准化組織(ISO)先後對數控機床坐標軸和運動方向、數控程序編程的代碼、字元和程序段格式等制定了若干標准和規范(我國按照ISO標准也制定了相應的國家標准和部頒標准),從而出現了用代碼和標示符號,按照嚴格的格式書寫的數控加工源程序——代碼格式編程程序。這種編寫源程序技術的重大進步,意義極為深遠。在這種編程方式出現後,凡是數控系統不論檔次高低,均具有編程功能。因為編程過程的大為簡化,使得機床操作者只要查閱、細讀系統說明書就有能力編程。從而使數控機床走向大范圍、廣領域的應用。
數控加工程序編制方法主要分為手工編程與自動編程兩種:
(1) 手工編程
手工編程是指從零件圖紙分析、工藝處理、數值計算、編寫程序單、直到程序校核等各步驟的數控編程工作均由人工完成的全過程。手工編程適合於編寫進行點位加工或幾何形狀不太復雜的零件的加工程序,以及程序坐標計算較為簡單、程序段不多、程序編制易於實現的場合。這種方法比較簡單,容易掌握,適應性較強。手工編程方法是編制加工程序的基礎,也是機床現場加工調試的主要方法,對機床操作人員來講是必須掌握的基本功,其重要性是不容忽視的。
(2) 自動編程
自動編程是指在計算機及相應的軟體系統的支持下,自動生成數控加工程序的過程。它充分發揮了計算機快速運算和存儲的功能。其特點是採用簡單、習慣的語言對加工對象的幾何形狀、加工工藝、切削參數及輔助信息等內容按規則進行描述,再由計算機自動地進行數值計算、刀具中心運動軌跡計算、後置處理,產生出零件加工程序單,並且對加工過程進行模擬。對於形狀復雜,具有非圓曲線輪廓、三維曲面等零件編寫加工程序,採用自動編程方法效率高,可靠性好。在編程過程中,程序編制人可及時檢查程序是否正確,需要時可及時修改。由於使用計算機代替編程人員完成了繁瑣的數值計算工作,並省去了書寫程序單等工作量,因而可提高編程效率幾十倍乃至上百倍,解決了手工編程無法解決的許多復雜零件的編程難題。
㈣ 編寫計算機程序有幾種常用的方法
編寫程序是一項系統而繁瑣的工作,它不僅需要程序設計人員具有一定的功底,更需要有良好的編程習慣和風格。良好的編程習慣和風格不僅可以使程序代碼更易於讀懂和修改,更重要的是,它可以使程序的結構更加合理,有助於提高程序的執行效率。下面是我在程序設計中總結的一些經驗,供大家參考。
設計順序
在我們剛開始學習程序設計的時候,要編寫一個程序,總是先進行一番構思,然後就一邊寫代碼一邊調試。這種方法一般只適用於非常小的程序,根據工程的特點,如果對所有程序都還按這種方法進行設計,是不合理的。
其實,設計程序就像我們蓋高樓大廈,首先要設計圖紙,然後動工。所以,對於個人編寫程序來說,應遵循以下步驟:
1、問題分析:對我們要使用程序設計手段去解決的問題進行系統地分析,了解程序是做什麼的,要達到一種什麼樣的效果等。
2、結構設計:也就是對程序的整體框架進行設計,設計出我們需要使用的模塊等等,並畫出流程圖。
3、用戶界面設計:在此,我們要設計出用於與用戶交互的輸入輸出界面。
4、代碼設計:在這個步驟中,我們要進行代碼的編寫。
5、調試:對程序中正在發生或可能發生的各種錯誤進行處理。
6、維護:通俗地說,維護就是對程序進行升級,對原有錯誤進行修改。
對於以上幾個步驟,我想大多數人會認為代碼設計最為重要,但如果程序的結構尚未清楚,我們在編寫代碼的時候就會發生混亂,一個程序性能的好壞,主要還是取決於它的結構是否合理。因此,在程序設計中,我們要盡可能注意這一點,這樣才能使我們的程序更加完善。
設計環境
一個良好的編程環境可以使我們在編寫程序時,不至於造成各種資源的紊亂,還可以避免資源的丟失。建議大家要在放源程序的目錄下建立「Programs」文件夾;然後再以你要編寫的程序名和版本為名建立一個文件夾,用於存放整個源程序以及各種資源;最後,分別建立幾個文件夾,「Documents」:用於存放程序文檔,包括流程圖等;「Resource」:用於存放圖片,聲音,影片等資源;「Debug」:用於存放調試的程序。「Release」:用於存放最終釋放的程序。
例如:我們要製作一個英語學習,名為「English」,版本為1.0,那麼我們的編程環境中應存在以下文件夾:
[DRIVE]:\\…\\Programs\\English1\\Debug\\
[DRIVE]:\\…\\Programs\\English1\\Documents\\
[DRIVE]:\\…\\Programs\\English1\\Resource\\
[DRIVE]:\\…\\Programs\\English1\\Release\\
另外,最好再建立一個專門的文件夾,用於存放各種模塊,以便能實現代碼的重用,這樣,我們就不用在每次寫程序時,都重寫所有的模塊,編程速度會有很大的提高。
設計技巧
代碼如果寫得很亂,程序便不易被閱讀與修改,所以,在編寫代碼時要注意以下幾點:
(1)注釋:寫注釋雖然要佔用一定的時間,但在閱讀和修改代碼時卻會節省很多的時間。所以,建議大家在定義一個函數時,在函數的第一行寫出函數的作用,再用一行解釋函數的參數,並在每個變數的定義語句後注釋出其作用。
(2)變數和函數的命名:每個程序都會使用很多的變數和函數,如果隨意命名變數與函數,每次使用時還得在變數或函數的定義語句處查出它的數據類型及名稱,而且隨意命名還會造成變數與函數重復定義。
建議大家使用匈牙利命名法,方法是:每個變數或函數的開頭都以其數據類型的縮寫命名,然後再加上代表這個變數或函數的作用的英文單詞簡寫共同組成變數或函數的名稱。例如:要定義用於計數的整型變數count,其定義語句為C\\C++:int icount; Basic:Dim icount as Integer。以這種方法定義,不僅可以有效地避免變數與函數的混亂與重復定義,還可以保證數據類型的匹配。
(3)控制項命名:如果在Windows下編程,你有可能會大量地使用控制項,如果不對控制項名嚴加管理,會造成很大程度的混亂,因此,建議在給控制項命名時,以控制項類型縮寫再加上代表這個控制項作用的英文單詞的簡寫共同組成此控制項的名稱。例如:你要命名一個按鈕控制項,作用是進行刪除操作,那麼控制項名可以命名為cmdDel。
並不是每個人都能成為頂級程序員,但我們都在程序員之路上不斷進步,追求更完美、更專業化的程序。不妨好好改造一下你的程序,你會從中感受到很多好處。
㈤ .plc的程序編寫有哪些圖形方法
編程語言有幾種:
梯形圖(LAD):方便直觀
語句表(SCL):方便復雜邏輯
圖形化(graph):圖形化編程
最推薦的一種:
梯形圖與語句表的結合:目前西門子,基恩士等支持梯形圖與語句表的混編,簡單邏輯使用梯形圖,數據處理和復雜邏輯使用語句表