時間:2023-07-19 09:28:52
緒論:在尋找寫作靈感嗎?愛發表網為您精選了8篇程序設計的結構,愿這些內容能夠啟迪您的思維,激發您的創作熱情,歡迎您的閱讀與分享!
中圖分類號:G642 文獻標識碼:A 文章編號:1009-3044(2015)09-0163-02
Abstract: C language programming is a profession course in the computer special field of study, and it is usually the first programming course to the students. So the experiment teaching of the course is too important. It mainly discusses the teaching design of structures in this paper, which can help the students to grasp the basic knowledge about structures, and can solve problems by using arrays of structure and linked lists. It proves that the teaching design can stimulate the students’ study interest.
Key words:C language; programming; teaching; structure; experiment
《C語言程序設計》這門課一般是計算機專業學生入學時所接觸到的第一門程序設計課程,這門課程需要學生掌握程序設計的方法,用C語言編程解決問題。在現實問題求解時,往往用簡單數據類型描述問題對象時可能不是很方便和準確,例如,描述職工信息這樣不同類型的數據組合時,這時就需要定義一種構造類型的數據結構來描述,這就是結構體。而且,本文認為結構體是實現了數據的封裝,在一定程度上體現了封裝的特性,對后續課程的教學有一定的啟發性。所以,結構體教學是C語言程序設計的一個重要的部分,同樣,在實驗課教學中結構體的實驗教學也是重要的一個環節,特別是鏈表方面的實驗教學對后續課程,如《數據結構》起著基礎性的作用。本文主要是對結構體的實驗教學的設計進行探討。
1 結構體實驗教學的設計
結構體實驗教學在教學時設計了3個實驗題目,這三個實驗題目的難度由易到難,試圖讓學生掌握結構體變量、結構體數組和鏈表的使用。
1.1 結構體變量的實驗設計
結構體變量的實驗屬于結構體實驗中比較簡單的實驗,這個實驗就是讓學生練習如何根據實際問題,用結構體定義自己所需的類型,再使用這種類型定義變量,編寫程序去解決問題。
在實驗教學中,教師要求學生解決如下的問題:要求用戶輸入三個點的坐標,編程判斷這三個點是否可以構成一個三角形,如果可以則輸出三角形的類型,即直角三角形、銳角三角形或者鈍角三角形。這個題目在實驗課上是以程序填空題的形式提供,這樣既可以引導學生初次使用結構體進行編程,在填寫缺失的代碼過程中,鍛煉學生的程序閱讀能力。在題目設計中盡可能的考察學生以前的所學知識點,比如,函數形參、函數調用、選擇結構編程等等。
這個程序填空題首先要求完成圖1中所示的點的結構體的設計,從而讓學生掌握如何根據實際需要來定義結構體這種類型。再要求學生完成圖1中input函數和len函數的填寫,讓學生掌握如何使用結構體變量的成員分量,并注意函數的類型;judgeexist函數用于判斷三個點能否構成三角形,在這個函數中強調邏輯運算符的使用,同時讓學生注意函數的返回值類型,強調C語言的數據類型沒有邏輯型,若想表示真假這樣的邏輯型值可以用1和0這樣的數值型數據來表示。
圖2中的qcos函數在設計填空時主要考察的是指針的使用,讓學生加深指針作為函數形參傳遞的是地址值這一個概念的理解。這個函數在編寫時并不是很難,就是三角形余弦函數的使用,關鍵在于形參變量中指
針變量的引用,即諸如*cosA的賦值。而圖2中judgetype函數就是依據三個角的余弦值來判斷三角形是直角三角形、銳角三角形,還是鈍角三角形。這個函數在設計填空時,主要是考察學生關系運算符的使用,以及嵌套的選擇if語句的理解和應用。圖3中主函數的設計填空主要是考察學生是否了解上述用戶自定義函數的功能,并通過填寫函數調用語句能正確的使用這些函數,此外,還考察了switch多分支語句的使用。
這個題目總體來說設計的并不是很難,當學生完成程序填空后,要求學生必須完成4種情況,即無法構成三角形、構成直角三角形、銳角三角形和鈍角三角形的數據測試,通過輸出的結果與預期結果作比較,從而檢查程序是否編寫正確。
1.2 結構體數組的實驗設計
結構體數組的實驗在結構體實驗中是中等難度的實驗,這個實驗題目的設計主要是讓學生掌握結構體數組的定義,讓學生了解結構體數組元素的訪問和其他基本數據類型的數組元素訪問是類似的,如若要訪問某個數組元素的成員分量時,需要在結構體數組元素后加上“.成員分量名”。
在實驗課時,布置了如下的實驗題目:輸入職工的職工號、姓名、工資和出生年、月、日,按職工工資由高到低輸出職工的職工號、姓名和周歲年齡。注意:輸入“#”表示輸入結束,假設最多只處理200個職工記錄。此題在定義職工信息這種數據類型時,涉及到了出生年、月、日這種日期類型,而C語言的基本類型中沒有這種類型,因此,教師可以引導學生先寫出如圖4(a)所示的日期類型struct date,再引導學生思考職工類型如何定義,提示學生職工信息包含出生日期這樣的日期型數據,建議定義出如圖4(b)所示的職工信息類型struct zg。一般地,學生會依據題目要求定義出struct zg的數組,其數組的大小為200。這個題目之所以這樣設計就是希望通過這個練習讓學生了解結構體類型中的成員分量沒有具體類型要求,完全根據需要而設。
此題的另一個設計要點是排序算法在結構體數組中的應用,在課堂練習時,有的學生使用的是冒泡排序法,有的則使用選擇排序法,但是在交換兩個struct zg的數組元素時,有部分學生會注意交換結構體數組元素的成員分量,那么這時就需要聲明交換結構體數組元素和交換整型數組元素的方法類似,將結構體數組元素看作一個整體。這個設計要點在于復習數組章節中所提到的排序算法。
此題最后一個設計要點是由已知的職工出生年、月、日求出該職工的周歲年齡,此處要求學生使用計算機的系統時間計算出職工的周歲年齡。為了能成功獲取計算機的系統時間,則要求學生在幫助菜單或者網上查找C中“time.h”所定義的time_t這個數據類型,讓學生了解typedef的用法;了解函數time()和localtime的用法,并能在程序中正確的使用;了解結構體struct tm,掌握該結構體中關于年、月、日表示的成員分量,讓學生特別注意每個成員分量所表示的意義及其取值的范圍,例如,成員分量tm_year表示的是年份,但是它的取值是從1900開始的一個整數,若想正確獲得當前的年份值,應該是tm_year+1900。當學生能正確地完成獲取系統時間的年、月、日的程序代碼設計后,引導學生思考如何計算周歲年齡,實際上就是用if嵌套語句完成多分支結構的設計。這個設計要點是希望學生了解C程序設計過程中可能會出現書本上所未介紹過的知識,這就需要學生通過其他方式,例如查閱工具書或者上網等手段來獲取所需的知識,同時,也復習了多分支結構的程序設計。
此外,在編程時要求學生盡量不要程序中只有一個main()函數,要盡量根據需要編寫用戶自定義函數。
1.3 鏈表的實驗設計
鏈表實驗的題目主要是讓學生熟悉結構體與指針相結合,對鏈表有個初步認識,了解鏈表中的一些操作。題目與1.2中結構體數組的題目非常類似,但是要求必須用鏈表來完成,從而讓學生熟悉鏈表這種結構。實驗題目是:輸入學生的學號、姓名和年齡,要求按學號由小到大輸出學生的學號、姓名和年齡,要求輸入“#”表示輸入結束。這個題目解決的方法很多,因為學生初次接觸鏈表,因此實驗教學時沒有提出任何方法的限制,只是要求學生用單鏈表求解,在求解過程中要求學生注意鏈表的創建算法,鏈表的輸出算法,以及鏈表修改結點指針的一些操作。
首先,教師要引導學生正確的完成鏈表結點的定義,即指針與結構體相結合,學生信息結點的定義可以如圖5所示。在求解問題時,需要學生注意結點指針的操作。實驗課上,有的學生在輸入學生信息時,即建鏈表時采用插入排序的思想,將待插入的學生信息的結點插入到已建好的且有序的鏈表中,用這種方法創建鏈表后,鏈表本身就是有序的,那么只需用循環結構輸出鏈表就可以完成問題的求解。在實驗課上,會發現有的學生有了這個想法但是算法編寫有問題,教師在指導的過程中可以建議學生在建鏈表過程中,每插入一個結點后就完成當前鏈表的輸出,從而有助于發現算法設計出錯之處。
在實驗課上,有的學生則先是創建鏈表,即將學生信息結點按輸入的順序插入到鏈表中,此時鏈表中的學生信息結點是無序的,再采用冒泡排序法或者選擇排序法對鏈表中的結點調整順序,最后編寫循環完成鏈表輸出。在調整結點時有的學生會出現算法思路不夠清晰,有點混亂這種現象,這時教師可以建議學生在草稿紙畫出鏈表結點的調整草圖,再依據圖示編寫代碼。在實驗課上,有的學生采用排序算法調整結點時直接交換圖5所示結點的no、name和age值,這種方法很便捷,但是達不到鏈表練習的目的,因此,教師可以鼓勵學生再換一種算法。
2 結束語
本文給出了結構體實驗教學的三個實驗題目,這三個題目有各自的重點,而且題目有程序填空,也有程序設計,讓學生由淺入深地逐步掌握結構體的定義,使用結構體變量和數組編程求解實際問題。并且實驗題目中有的內容是對課本上的知識進行一定的擴展,力圖培養學生的自學能力,因為在實際解決問題時,有的知識可能是課堂上沒有提到的,因此,學生要學會查閱資料進行自學。
參考文獻:
[1] 胡明, 王紅梅. 程序設計基礎――從問題到程序[M]. 北京: 清華大學出版社, 2011.
[2] 孫燮華. C程序設計導引實驗與習題解答[M]. 北京: 清華大學出版社, 2011.
[3] 羅永龍, 方群. C語言程序設計[M]. 北京: 科學出版社, 2013.
全書共20章。1.Python編程101:對使用Python語言編程進行總體介紹,包括創建對象、對象調用方法、運算符重載、讀取文件方法、XML文件等內容;2.計算復雜度:包括計算機體系結構介紹、常見的計算復雜性、攤銷復雜度的方法等;3.遞歸:包括時棧和堆的概念、簡單遞歸函數的編寫、運行,遞歸計算機圖形學、列表與字符串等;4.排序:包括選擇排序、歸并排序、快速排序、鏈表、棧和隊列等內容;5.集合與映射:數獨游戲介紹、集、散列等相關概念,最后分析規劃問題;6.樹:抽象語法樹和表達、前綴和后綴表達式、解析前綴表達式、二叉搜索樹等內容;7.圖:包括圖的定義及理論、存儲結構及算法實現、Kruskal算法、Dijkstra算法、圖的表示方法等;8.Bloom過濾器、Trie數據類型等相關內容;9.堆:包括堆的主要思想及其建立、排序算法、與其他算法的比較等;10.平衡二叉搜索樹:二叉搜索樹的概念、存儲結構與性質、AVL樹與 Splay樹等具體實例;11.B樹:包括關系型數據庫的概念、B樹的組織結構、優勢、實現、B樹的插入與刪除等內容;12.啟發式搜索:包括深度優先搜索與廣度優先搜索、A*搜索、最佳搜索等相關內容;13.附錄A:整數操作符;14.附錄B:浮算子;15.附錄C:字符串運算符和方法;16.附錄D:列表操作符和方法;17.附錄E:字典操作和方法;18.附錄F:Turtle方法;19附錄G:TurtleScreen方法;20.附錄H:完整的程序。
作者Kent D.Lee博士是美國艾奧瓦洲路德學院計算機科學教授,已成功出版兩本著作:Python編程基礎和編程語言基礎。另一作者Steve Hubbard博士是路德學院數學與計算機科學系教授。
本書介紹了初級與高級的數據結構和算法問題,每一章開始提供了學習目標,復習題和編程練習,以及眾多的例證;同時在相關的網站提供可下載的程序和補充文件。本書可以作為計算機學科相關專業的教材或參考書,同時對計算機科技工作者也有參考價值。
關鍵詞:循環結構;C語言程序設計;非計算機專業
中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2012)26-6323-05
Discussion on Loop Structure Teaching in C Language Programming of Non-computer Specialty
XIA Yun
(College of Mathematics and Computer Science, Anhui Normal University , Wuhu 241000 , China)
Abstract: The teaching of loop structure is an important component in C language programming. This paper designed 5 teach? ing examples for the students of non-computer specialty. This paper analyzes the teaching progress in detail and emphasizes the teaching points of the loop structure teaching. And it produces a good effect in the actual teaching progress.
Key words: loop structure; C Language programming; non-computer specialty
大學計算機應用基礎作為一門課程大約于20世紀90年代中期開設,現在已成為大學里的計算機學習基礎課程,是所有非計算機專業大一新生的必修公共基礎課,也是培養學生基本素質的一門重要課程[1]。作為大學計算機應用基礎課程,理工類專業大部分會開設程序設計課程,有部分專業會開設C程序設計課程。C語言是一種語法靈活、適用范圍廣的高級程序設計語言。結構化程序設計方法有三種基本結構:順序結構、分支結構和循環結構。順序結構和分支結構比較簡單,循環結構從教學上來說是重點也是難點。本文主要對C語言循環結構教學進行探討。
1教學內容的分析
C語言循環結構編程主要涉及到三種循環結構語句while、do-while和for。本文作者認為非計算機專業開設這門課程,主要是講解程序設計的方法,培養學生的編程能力和思維能力,因此,在教學中上述的三種語句可以以while語句為重點,講解循環結構編程的思想,do-while和for語句可以簡單舉例說明它們的流程。在講解循環結構編程分析時,可以以流程圖或者用自然語言逐步描述操作步驟的形式,指出循環結構編程關鍵是找到在什么情況下需要反復執行某些操作,并找到這些反復執行的操作是什么。
2教學用例的分析
在課程教學過程中,需要用一些例子來配合講解循環結構的編程。在教學時,選取一些比較合適的例子,可以很好地幫助學生理解所教授的內容。教師在教學過程中除了要加強課堂啟發外,盡可能結合課程自身的特點,注重學生現場演練,并采用任務驅動、師生互動、鼓勵學生等教學手段來提高其學習的主動性和積極性[2]。
2.1導入的例子
在教學活動中,講授后面知識內容時要與前面知識相互呼應[3],因此,在上課時,可以以這樣的問題開始,例題1:用戶輸入正整數n值的大小后,要求計算1+2+3+…+n,將所得出的結果輸出。這個例題主要是復習前面的內容,復習輸入、輸出函數和分支結構的編程。該問題提出后,可以讓同學們思考一下,然后再進行提問,提問時可以讓學生說出編程思路,若課堂時間比較多也可以請學生直接編寫源代碼并運行。
提問時,有的同學可能給出如下的順序結構編程的解答:
步驟1:輸入整數n
步驟2:求s=(1+n)*n/2
步驟3:輸出s
while (j
{輸出i*j
j++;}
由此,得出在循環while (i
循環結構是結構化程序設計的一種重要結構,在教學中不僅需要學生掌握這種結構的語法,更重要的是培養學生的設計思維和思考方法,本文主要是從教學的角度,對循環結構的整個教學過程設計了5個教學用例,并對其進行展開分析,重點是讓學生掌握循環結構編程的思想,實際上就是在問題分析過程中找循環條件和循環操作,在實際教學中取得了較好的效果。
[1]何文海,吳明珠,謝劍剛.情商與智商相結合的教學模式[J].現代計算機,2007(8):73-75.
[2]郭海花,陳允芳,王健.非計算機專業中“VB程序設計”教學方法初探[J].計算機教育,2009(18):98-100.
1、整體思路清楚,目標明確。
2、設計工作中階段性非常強,有利于系統開發的總體管理和控制。
3、在系統分析時可以診斷出原系統中存在的問題和結構上的缺陷。
4、用戶要求難以在系統分析階段準確定義,致使系統在交付使用時產生許多問題。
5、用系統開發每個階段的成果來進行控制,不能適應事物變化的要求。
6、系統的開發周期長。
關鍵詞:教學設計;分支結構;IF語句
中圖分類號:G633.67 文獻標志碼:A 文章編號:1674-9324(2012)03-0226-02
教材分析:
該課題的內容選自于《算法與程序設計》教材,該教材是上海市高中信息科技課程選修模塊。學習本模塊的內容,目的是進一步激發學生對計算機探索學習的興趣,培養運用計算機解決具體問題的基礎能力,養成良好的思維與程序設計基本習慣。
《分支結構的程序實現》是本模塊第四章第一節的內容。分支結構的授課分為兩課時,第一課時:分支結構的流程圖繪制;第二課時:分支結構的程序實現。本課為第二課時,主要內容是用IF語句解決日常生活中涉及分支結構的實際問題。
通過本課的學習,有助于學生體會和理解程序設計的思想,提升學生解決問題的能力,而且也為之后循環結構、枚舉算法的學習打下基礎。
學情分析:
學生在學習本課內容前,需有兩方面的知識儲備:
1.通過分支結構第一課時“分支結構的流程圖繪制”知識的學習,理解并掌握分支結構的特點、執行流程及其作用。
2.通過“順序結構及其程序實現”知識的學習,基本掌握VB控件的設置、動作的實現等內容,對于VB程序的建立、運行、調試過程也有一定的實踐經驗。
對上述內容的學習和掌握為本節課的學習奠定了一定的基礎。另外,高一的學生分析解決問題的能力、自我探究的能力也有了一定的水平。
教學資源:
根據教學內容和學生實際,在教學資源方面做如下準備:
1.技術準備:計算機網絡機房、多媒體廣播軟件、Microsoft Visual Basic 6.0中文版
2.資源。①教師機:1個PPT課件,2個程序(1個“猜價格”的演示程序,1個“ATM機錄入密碼”半成品程序)②學生機:1個“半成品”程序(包含3個小任務)
教學目標分析:
1.知識與技能:①掌握分支選擇中IF語句(塊語句)的格式和功能。②學會用IF語句解決日常生活中的實際問題。
2.過程與方法:①通過依次學習單分支語句、雙分支語句,再到分支嵌套語句,學生能循序漸進地掌握分支結構。②通過采用VB半成品加工策略來完善程序,學生能體驗運用編寫程序解決問題的基本過程。
3.情感態度與價值觀:①培養學生嚴密的邏輯思維能力、自主探究能力。②加強學生利用本學科解決日常學習生活中問題的意識。
教學重點難點:
教學重點:掌握分支結構IF語句的格式。
教學難點:能根據實際分析問題,寫出程序并調試成功。
教法與學法:
1.教法:半成品加工方法。采用半成品加工方法,可以淡化與分支結構無關的內容,例如可視化VB界面的設計,從而有效提高課堂效率,這種方式在鞏固練習中使用非常合適。
2.學法:自主學習、小組討論、組間交流。學生作為學習的個人主體,必須通過自主學習掌握本節課的學習內容,從而培養學生獨立解決問題的能力。采用小組討論、組間交流的方法,培養學生互助、團結協作的良好品質;增強學生協作學習、與人合作交流的意識;形成積極主動的學習和使用信息技術、參與信息活動的態度。
教學過程設計:
(一)創設情境,激發興趣
1.教師演示猜價格的小程序。
2.提出問題:該程序是一種什么結構?順序結構?還是分支結構?
3.舉例:生活中有很多分支結構的問題。
4.引出分支結構的程序實現。
(設計意圖:從生活中提取問題,讓學生能有學習興趣,并能及時了解本節課的學習任務。)
(二)合作探究,獲得新知
以“銀行ATM機錄入密碼”程序為例:
1.教師展示“密碼判斷”的單分支結構流程圖,請同學用自然語言來描述。學生回答:如果(用戶輸入的密碼為999)那么(程序提示密碼正確)。
2.教師引出VB中單分支結構IF語句的基本用法。同時讓同學們討論IF…THEN…中省略號代表什么含義。學生回答:IF(條件)THEN(條件成立時執行的語句)。
3.師生共同共同編寫代碼,程序實現。
4.教師提出問題:如果密碼是錯誤的,那么將會出現什么情況?如果要讓程序在密碼輸入錯誤時,也要出現提示,該如何做。
5.教師展示雙分支結構流程圖,請同學用自然語言來描述算法。學生回答:如果(用戶輸入的密碼為999)那么(程序提示密碼正確)否則(程序提示密碼錯誤)。
6.教師引出VB中雙分支結構IF語句的基本用法,同時讓學生討論IF…THEN…ELSE…中省略號代表什么含義。學生回答:IF(條件)THEN(條件成立時執行的語句)ELSE(條件不成立時執行的語句)。
7.師生共同編寫代碼,程序實現。
8.教師講解IF語句的兩種格式:行IF語句和塊IF語句的用法。
(設計意圖:通過自然語言與程序設計語言的比對,加深學生對分支結構的認識。通過師生共同參與改寫程序,使學生了解IF語句的書寫格式,并感受程序語言的嚴謹性。)
(三)學生實踐,解決問題
1.教師布置3個任務,學生選擇其中一個進行操作,要求自主完成。①判斷是否中獎,要求如下:程序設置初始中獎號碼,若用戶輸入的號碼為中獎號碼,程序則顯示“恭喜您,您中獎啦!”②判斷是否打折,超市進行蘋果促銷,如果買5斤以內就按價格4.5元/斤計算,如果大于等于5斤,總價可打九折。要求如下:輸入你買的蘋果重量(單位:斤),程序顯示總金額。③判斷一元二次方程是否有解。要求:輸入一元二次方程的系數a,b,c,判斷該方程是否有解,如果有解,則輸出解,如果沒有解,則輸出“該方程無解”。
2.任務分析:判斷是單分支還是雙分支結構?鼓勵學生可多選任務來完成。
3.展示成果,教師強調IF語句的格式規范。
(設計意圖:通過三道難易不同的題目進行分層訓練,讓不同知識基礎和思維能力的學生都能夠體驗到成功的喜悅,提高學生分析問題、解決問題的能力,突出本課的重點。)
(四)交流提升,應用拓展
1.教師提出在任務2中,若要求如下:輸入斤數,如果小于5斤,就按價格4.5元/斤計算,如果大于等于5斤,就打九折,如果大于等于10斤就打八折,程序顯示總金額,該如何設計算法?學生回答:利用分支嵌套結構可以實現該算法。
2.教師展示分支嵌套流程圖。
3.學生小組討論,組間交流。
4.學生組內共同撰寫程序。
5.教師展示學生的代碼,再次強調語句撰寫的規范。
(設計意圖:通過對新任務的探討、分析,加深學生對分支結構嵌套語句的理解。同時進一步養成良好的編程習慣。)
(五)總結回顧,布置作業
關鍵詞:PLC;結構化;給排水
1 引言
隨著現代工業發展進程的不斷加快,工業自動化控制技術發揮著越來越大的作用,PLC控制系統的應用也日益廣泛。PLC程序設計的水平優劣往往決定著工程能否及時竣工投產,工業設備能否充分發揮其設計生產能力。傳統的PLC編程方式程序繁瑣冗長,結構不清晰,不利于控制程序在多個項目中的重復使用。如何迅速、優質地編制符合不同設備工藝特點,參數的PLC程序,對工業控制系統的及時完工,提高自動化控制水平具有較大的意義。本文結合給排水行業常用設備及工藝程序的編寫,對結構化編程在PLC中的應用進行了初步的探索,取得了較理想的效果。
2 PLC程序設計方法簡介
常見的程序設計方法分為三種:線性化方法、模塊化方法以及結構化方法[1]。
線性化編程方法:將所有的程序代碼全部放在一個程序塊中,如對S7-300/400來說,在OB1中寫入數據采集、設備控制、臺時統計等全部用戶程序。該方法與PLC所代替的繼電器控制電路類似,系統按照順序處理各條指令。它適用于小型設備配套PLC的編程,對于大中型項目則顯得程序結構不清晰,同時由于需要對不同設備編制大量類似的代碼,導致代碼冗長,難以調試和維護。
模塊化編程方法:將程序根據不同功能需求分成不同的塊,每個功能的控制指令在各自的塊內,OB1按順序調用每個塊。該方法程序結構清晰,便于調試和維護,但僅將功能按塊分配,加以有條件的調用,故雖然CPU效率得到提高,但代碼冗長、調試困難的缺點未得到明顯改善。
結構化編程方法:將復雜的自動化任務分割成過程相關的功能或可多次處理的小任務,以提供可以用于類似任務的通用的程序代碼,這樣更易于控制復雜任務。而這些小任務以相應的程序段表示,稱為塊。只需要在調用程序塊時針對不同的設備和工藝流程代入不同的參數或地址,即可實現不同設備的控制,無須多處重復輸入相同功能的代碼。當需要對功能進行修改時只需要修改程序塊即可,提高了編程的效率和可靠性。
3 結構化編程方法設計實例
在實際應用中,在對給排水行業通用設備和工藝進行詳細分析的基礎上,針對典型設備和工藝分別編制了水泵、儀表、閥門、泵站水泵調度、自動加藥等不同的控制模塊,使高效開發PLC程序在給排水行業的應用成為可能。下面以變頻水泵及泵站的水泵調度為例來介紹結構化編程方法。
3.1 變頻水泵功能塊
變頻水泵是給排水行業最常見的設備,其調用如圖2所示。
圖2為變頻水泵控制塊的調用實例,該FB的輸入輸出參數如圖3示。
功能塊接口參數共分為三種類型:輸入(INPUT);輸出(OUTPUT);輸入輸出(IN_OUT)。其中輸入參數主要有:遠程信號,上電信號,運行信號,水泵故障,電回路故障,變頻器故障,頻率輸入等;輸出參數主要有:開停控制,頻率控制輸出,實際運行頻率等;輸入輸出類型參數主要有:變頻電機狀態,變頻電機控制命令,電機臺時及開停次數統計,頻率設定值等。
輸入輸出類型參數可由人工或自控程序在功能塊外部進行賦值,也可由本功能塊內部邏輯進行修改。其中的State、Command等參數均為WORD類型,其每一位分別代表了不同的含義。
該功能塊包含了除電流外的變頻水泵常見的絕大部分信號處理及控制功能,對于部分實際工程中未使用的參數,可通過直接設置默認值或空置的方式進行處理。水泵電流可通過專門的模擬量處理程序塊進行數據轉換和上下限報警判斷,當電流超過上下限設定值時發出報警信號(過流、欠流)傳送給變頻水泵功能塊,從而實現水泵的電流超限保護功能。
3.2 泵站水泵調度功能塊
污水廠一般具有進水泵房、中間提升泵站、出水泵房等工藝段,其水泵控制模式基本相同,都是根據液位的變化來調節運行的水泵頻率和臺數,調泵時又要考慮單臺設備的運行臺時和啟停間隔等因素。其基本原理介紹如下:
泵站的液位控制一般采用根據液位分段啟停泵的模式,不同的液位分別對應當前需要開泵的臺數,同時具備死區保護功能,停泵液位設定值比啟泵液位設定值略低,以防止特殊情況下水泵的頻繁啟停[2]。
水泵的啟停選擇需要考慮以下幾個條件:
(1)熱備狀態。PLC首先檢測水泵上電情況,遠程狀態,控制模式,故障情況等,當以上條件均滿足時認為該泵處于熱備狀態,可被自控程序進行開停調度。
(2)平衡調泵。累計運行時間最短的泵優先被啟動,運行時間最長的泵優先停止,使每臺泵運轉時間大致相等。當運行時間相同時,按泵的順序啟停。
(3)啟動間隔保護。控制程序使每一臺泵每小時起動次數少于6次,兩次起動間隔≥10分鐘,且不論何種情況,不同時起動2臺及2臺以上水泵。
在實際應用中,根據分段啟泵原理以及低水位保護等條件編制泵站自控功能塊,計算當前需要開泵臺數。根據上述三條件,編制了水泵啟停調度選擇功能塊,用于選擇當前需要啟動的水泵編號。兩功能塊配套使用,可快速完成泵站自動調泵程序的編制工作。限于篇幅,本處不再詳述其具體實現過程。
關鍵詞:實例拓展;結構化;程序設計教學;教學應用
中圖分類號:TP311.1
在計算機專業的教學中,程序設計是一門最基礎,也是最重要的課程之一,是培養學生計算編程能力的主要課程[1]。但是又因為這門課程涉及到很多理論性極強的內容和大量的編碼知識,不容易被學生理解,所以是計算機專業教學的重點和難點。在過去傳統的教學方式之下,老師只是按照大綱的順序來講解相關的知識點,即使舉例也只是引用一些比較典型的例題,例題和例題之間缺乏聯系,使得學生只能進行生硬的記憶法來掌握程序設計各種語句,不能真正理解這些編程方法,達不到自主編程的教學目的,收效甚微。為了改變這一現狀,讓學生能夠真正理解程序結構之間的關系,能夠靈活運用各種編程方法進行自主編程,在教學的過程中怎樣選擇具合適的實例已經成為提高教學效果的關鍵。我校推行的實例拓展教學法很好地解決了這一難題,在我校大力推行之后,受到廣大師生的好評,結構化程序設計的教學效果明顯。
1 實例拓展法概述
實例拓展教學法屬于教學方式創新的表現形式之一。在這種教學方法中,實例就是整個教學的中心,所有的教學活動都可以通過實例來完成,這也是這種教學方法最典型的特征[2]。運用實例拓展法進行教學,學王可以充分利用各種學習資源,通過自主探索或者相互合作的方式來完成實例任務,同時又會催生出一種新的實例。這種重在學生實踐活動的教學方式就被稱之為拓展實例法。這種教學方法有助于培養學生的自主學習能力,提高他們獨立分析問題和解決問題的能力。在計算機結構化程序設計這種實踐性較強的課程教學中,尤其適合使用這種方法。
2 實例拓展法在結構化程序設計教學中的實際應用
在計算機程序設計中,VB語言是一門重要的課程,所以我們就以這門課程為例,對實例拓展教學方法在課堂上的具體應用進行具體。為了便于學生理解和練習,我們將實例分成了兩種,一種在老師進行課堂理論教學時應用,另一種則在上機實踐活動中應用,下面我們對實例的應用進行出詳細介紹。
老師在進行教學設計時,如何安排實例是教學活動的核心所在。在對教學實例進行安排時,老師一定要結合中專學生的年齡特點、心理發展水平和實際生活的需要等因素。同時,實例的拓展應該遵循教育學的客觀規律,從易到難,由淺入深,便于學生進行理解[3]。另外,實例的難度應該適中,既不能讓他們一看就明白,也不能讓他們冥思苦想而不得,要讓大部分學生通過自己的思考能夠完成,而且要將相關的知識點囊括其中,這樣才能充分實例拓展的作用。
在VB結構化程序設計的教學中,課堂內容可以被大致分成順序結構、選擇結構、循環結構、數組應用和過程設計等五個部分[4]。老師在進行教學的過程中一定要全面掌握這些內容之間的內在關系。在本文中,我們將省略比較復雜的程序代碼,對這5部分內容運用到的實例進行簡單分析。
在進行順序結構這一內容的教學時,我們可以以計算圓的面積為例,在輸入圓的半徑之后就可以計算出來。這一實例可以作為入門介紹,理解起來并不困難。在這個實例中,融入了程序的三大基本組成部分,即數據輸入、處理和輸出,在講解實例的過程中,就能讓學生掌握這一知識點。
在結構程序的教學中,可以在對上述實例進行拓展,提出問題:“假設圓的半徑的小于0時該怎們辦?”讓學生進行思考,然后提出程序設計中的基本語句――選擇結構的if語句。為了讓學生理解if語句的語法,老師可以讓學生在鍵盤上隨意輸入三個數字,求解最大值和最小值,在這個過程中介紹if語句的兩種格式,即單行格式和多行格式。到這里,我們就在前兩個實例的基礎上衍生出了新的實例。在了解if語句的格式之后,老師還可以對實例進行進一步拓展,讓學生求解分段函數,明確if語句和Select Case這兩種多支結構的語句格式。
在循環結構的教學中,我們可以引入一個新的實例來介紹循環結構For Next語句,例如在窗體上顯示出1、3、5、7、9這五個奇數。然后讓學生對求解上述數字之和,對上述實例進行拓展。進一步掌握For Next語句。在求和的基礎上,再一次對實例進行拓展,讓學生在100以內,求出1+3+5+7+……的最大奇數值,在講解實例的過程中引入循環結構中一種重要的語句形式――Do Loop語句。
在講解數組應用這一內容時,可以在任意輸入3個數字求解最大值和最小值這一實例的基礎上加以拓展,讓學生思考怎樣求出任意10個數字的最大值和最小值,通過這個實例引入數組概念和靜態數組的使用方法。在這一實例的基礎上還能進一步拓展,求出任意數字的最大值和最小,引入動態數組的概念的和具體的使用方法。
在進行過程設計這一內容的教學時,依然在任意求解3個數字的最大值和最小值這一實例的基礎上加以拓展,將它們分成兩個函數,在講解的過程中讓學生掌握過程的概念以及Function過程的建立和使用方法。在此基礎上,對實例進一步拓展,將3個數字的最大值和最小值看成兩個Sub過程,讓學生通過老師對實例的講解掌握Sub過程的建立和使用方法[5],并與Function過程進行對比。
以上的實例主要是在引入相關概念和講解程序基本原理時使用的,需要在多個課時中講解。根據所講內容的課時安排,可適當補充其他實例,更加詳細地講解相關知識,也可以補充一些比較有趣實用的綜合例子,如制作計算器、打印九九乘法表等,進一步開闊學生的眼界。
經過多年的教學實踐,筆者發現在運用實力拓展法之后,學生對程序設計的學習興趣大增,不管是課堂表現還是作業完成情況都有了明顯改善,考試成績也得到了大幅度提升。通過這種教學方法,學生能夠從中學到自己需要的知識,并真正將其轉化為實際應用,設計出實用的小軟件來,對于他們將來學習其他知識和提高計算機操作水平都有很大的促進作用。
3 結束語
綜上所述,在結構化程序設計的教學中,實力拓展法對于提高教學效果,培養學生的計算機運用能力具有非常重要的作用。但是在具體的教學過程中還要從學生的實際情況出發,進行靈活地調整,才能真正激發出學生的興趣,充分發揮實例拓展法的作用。
參考文獻:
[1]武相軍,白晨希.實例拓展法在結構化程序設計教學中的應用[J].計算機教育,2013(17):47-49.
[2]傅籬.計算機結構化程序設計教學探索與實踐[J].計算機教育,2009(12):78-80.
[3]孫英,徐順瓊,李興美.C語言中循環結構程序課的教學設計與探討[J].計算機教育,2009(07):186-187.
[4]周顯春.合作探究式教學法在結構化程序設計教學中的運用[J].學習月刊,2010(30):91-92.
關鍵詞:液壓支架;結構件斷面;抗彎強度計算;VB軟件計算
DOI:10.16640/ki.37-1222/t.2017.02.034
1 引言 背景技術
液壓支架為煤礦機械化采煤的主要支護設備,結構件是液壓支架的主體框架,其結構多呈箱型,目前,對于液壓支架結構件箱體斷面抗彎強度設計計算,多為依靠OPT液壓支架計算程序、采用邁實軟件或人工列方程計算等方式進行計算,前者涉及到程序不能升級、不能支持win7以上操作系統,且界面可視化程度不好;中者為采用導入截面圖形來識別各個截面圖形尺寸分別對每塊板進行計算,原理不同,使用起來效率方面并不算出眾;而后者在計算時效性方面計算太煩瑣,耗時耗力,多已放棄采用。
2 計算原理
根據液壓支架受力分析給出結構件危險斷面的最大彎矩M進行抗彎強度校核,畫出該部件危險斷面圖,該斷面圖通常為數十塊鋼板拼裝組成,首先需對相同類型尺寸鋼板進行歸類,整理出若干組鋼板類型;分別對每組鋼板進行截面積、截面型心高度計算,進而計算出斷面的總型心高度、并分別計算出每組鋼板的矩形截面慣性矩,進而計算出斷面總慣性矩J;依次計算出最大、最小彎曲應力、、最大最小安全系數;通過使用VB語言編制出自動計算結構件斷面抗彎強度計算分析程序,獲得相應安全系數并校核出該斷面是否設計合理;如圖1所示為某一部件危險斷面圖:
3 設計意圖及VB程序的實現
(1)設計意圖:使用VB語言編寫程序代替人工計算意義在于利用計算機快捷準確、功能強大以及具有可視化界;本程序設計目的在于克服上述缺點,基于VB語言設計,對各功能模塊編寫代碼、并進行編譯生成可執行exe文件。該程序包括信息參數輸入模塊、導入導出模塊、計算結果顯示模塊,并設有計算按鈕、導入、導出、清除按鈕;斷面抗彎強度計算分析截圖如2所示:
(2)信息參數輸入模塊:可按要求將已知的箱體截面的組件數量、斷面最大高度、箱體選用的材料強度、斷面位置所受最大彎矩,各組件的寬度、高度、形心高度、塊數依次輸入模塊;如該斷面中有某組鋼板高于或低其他材料強度,可按相應的板材屈服強度比比值換算出該組鋼板在與其他鋼板使用相同材料強度時的厚度換算輸入即可;如鋼板組數9為使用Q690材料,其他各組鋼板都采用Q550材料,相應厚度換算為30*690/550=37.636。
(3)計算結果顯示模塊:點擊計算按鈕后,計算程序就會根據信息參數輸入模塊中的數據計算出截面形心高度y、截面慣性矩Jz、最大彎曲應力σmax、最小彎曲應力σmin、最大安全系數Nmax、最小安全系數Nmin,并在計算結果顯示模塊中相應位置顯示出來,液壓支架工藝設計人員可根據計算分析安全系數大小作出相應的強度增補或驗證措施。
(4)導入導出模塊:點擊導出按鈕后,計算程序會彈出另存為對話框,將信息參數輸入數據及輸出分析按txt格式保存;以備后期存檔或方便查看。點擊導入按鈕后,計算程序會彈出打開對話框,供工藝設計人員選擇已保存的txt文件進行導入至信息參數輸入模塊,方便設計人員及時驗算用;既可在信息參數輸入模塊直接輸入數據方式,也可按導入txt數據文件方式計算,期間可以根據設計意圖臨時更改輸入的參數,并且還可識別原OPT生成格式文件進行導入、計算分析進而實現新舊計算工具的融合體現。
4 使用效果及結語
使用效果:在進行液壓支架結構件箱體設計計算時,將技術人員從繁重的強度計算中解放出來,實現了方便快捷的抗彎強度計算過程,而且計算結果可靠,經驗證與OPT液壓支架優化軟件計算結果一致,界面友好,計算結果可靠,簡單易用、不受操作系統限制,適用所有windows98以上系統,所用時間相對較少。