• <dd id="ltrtz"></dd>

  • <dfn id="ltrtz"></dfn>
  • <dd id="ltrtz"><nav id="ltrtz"></nav></dd>
    <strike id="ltrtz"></strike>

    1. 歡迎來到優發表網!

      購物車(0)

      期刊大全 雜志訂閱 SCI期刊 期刊投稿 出版社 公文范文 精品范文

      程序設計的結構范文

      時間:2023-08-08 16:46:01

      序論:在您撰寫程序設計的結構時,參考他人的優秀作品可以開闊視野,小編為您整理的7篇范文,希望這些建議能夠激發您的創作熱情,引導您走向新的創作高度。

      程序設計的結構

      第1篇

      關鍵詞:VB選擇結構;IF語句;評價

      Visual Basic(簡稱VB)是面向對象的可視化編程語言,它簡單易學的語法深受廣大編程愛好者的青睞,同時也是中職學校計算機專業學生的一門必修課程。通過學習VB程序設計,培養學生的程序設計能力和開發軟件的興趣。VB有三種基本的程序控制結構:順序結構、選擇結構和循環結構。當一個問題涉及到對條件進行分析、比較、判斷,并根據判斷所得的結果采取相應的處理方式,這時就要用選擇結構來解決問題。在教學過程中如何突破VB選擇結構教學的重點、難點,如何讓初學者理解選擇結構的執行過程,掌握選擇結構的應用,培養他們的邏輯思維能力、實踐操作能力和解決實際問題的能力,這是筆者在教學中一直思考的問題?,F就結合VB選擇結構中IF語句教學的主要環節進行探討。

      一、實例導入,煥發熱情

      中職學生的知識基礎較差,普遍學習興趣不高。如果在選擇結構教學中按照傳統的先講解IF語句的格式和功能,再進行實踐操作,則未必能取得較好的教學效果。興趣是學習的原動力,這就需要計算機教師暫時拋開晦澀難懂的概念和語法,采用生活化的實例來煥發學生的學習熱情。

      新課之前,首先通過局域網分發幾個用IF語句編寫的VB可執行程序到學生電腦上,如:手機價格競猜游戲,讓學生一開始就動手體驗選擇結構的魅力。學生運行程序的過程仿佛置身于游戲中,他們結合實際生活經驗很輕松便推斷出:如果輸入的價格大于1999,則提示“猜高了”;如果輸入的價格小于1999,則提示“猜低了”;如果輸入的價格等于1999,則提示“恭喜您,猜對了”。學生用自己的語言思路清晰地總結出競猜過程中的三種情況,教師順勢引出條件判斷這個概念。通過講解這個例子讓學生對價格判斷和提示信息對應起來,理解根據不同的判斷結果執行不同的語句。通過實例導入,學生對VB編程產生了好奇心,教師結合實例讓學生理解VB選擇結構的執行過程,從而將將學生的被動學習轉化為主動學習。

      二、加工半成品,突出重點

      VB選擇結構教學中,如果給學生一個完整的任務書,那么按照實際的流程,學生在任務前期首先要進行界面設計、屬性設置以及一些順序結構語句的編寫等。由于學生的理解程度不一樣,完成進度也不一樣,有些學生花長時間停留在前期工作中,一節課下來都沒有進入到選擇結構代碼的編寫,這就影響到了選擇結構學習目標的落實,評價也變的非常困難。針對這一情況,VB選擇結構IF語句教學中采用“半成品”加工策略,給學生一個不完整的任務,僅對IF分支語句環節進行“留白”,“留白”部分即教學的重點。學生在“半成品”到“成品”的加工過程中既學到了知識、掌握了重點,又提高了實踐效率、獲得了成功的體驗。

      如在IF雙分支語句教學中,采用實例:商城迎新年促銷活動,單價滿200元減40,不滿200元則按原價出售,根據商品原價求實付金額。教師給出界面和部分代碼, 對代碼中IF雙分支語句部分進行“留白”。教師引導學生自主探究,分析問題,學生由活動規則總結出兩種判斷情況(a>=200和a

      三、條件遷移,化解難點

      多分支IF語句的應用是VB選擇結構IF語句的難點。教學中若采用條件遷移法,即通過在已掌握的雙分支IF語句實例的基礎上對判斷條件進行增加或改變來過渡到新的例題,從而降低多分支語句應用的難度。這樣的方法符合學生的認知規律和發展規律,讓學生對多分支IF語句的認識、理解、運用有一個逐步深入的“螺旋式”上升的過程。

      如商城迎新年促銷活動,在原有基礎上增加條件:單價滿1000元的商品在享受滿200減40后再享受9折優惠?;趯W生之前已掌握了雙分支IF語句應用,結合已有的數學知識,解決問題的方法和步驟便得到了簡化,并能根據實際情況寫出邏輯表達式和相應的執行語句。如對百分制成績進行等級評定,在一開始的雙分支IF語句(及格和不及格)的基礎上通過對百分制成績的分數段范圍進行逐步細化,對應的評定等級則也有所變化(及格、良好、優秀),從而過渡到多分支IF語句。通過簡單的改進實現小小的目標,通過條件遷移法化解多分支IF語句這個教學難點。條件的遷移,就是用一個接一個的問題,牽著學生的思維,讓他們不停的跟著教學內容思考并實踐,而不是一味的坐著被“灌”。

      四、課堂教學評價

      課堂教學評價是促進學生成長、教師專業發展和提高課堂教學質量的重要手段。在VB選擇結構程序設計的實際教學中采取多向立體式評價方式:教師對學生的學習效果評價、學生對教師的教學滿意度評價、學生的自我評價,這些評價貫穿于整個教學活動中。通過教師對學生的學習效果評價,及時反饋學生對重、難點的掌握情況,幫助學生正確認識自我,樹立不斷進取的信心。通過學生對教師教學滿意度的評價,幫助教師了解自己的課堂教學水平以及不足之處,為優化教學過程提供科學依據,有利于教師提高課堂教學質量。通過學生自我評價對VB選擇結構IF語句的知識點進行回顧與梳理,將感性知識理性化,并進行學習方法的總結與交流等。

      五、結束語

      基于中職學生的學習特點,我們計算機教師需要用心設計課堂,在教學中努力給學生提供生活化的問題解決環境,讓學生帶著疑問主動學習。采用適合學生認知規律和發展規律的教學方法突破重點、化解難點。教學中進行有效的課堂教學評價,從而切實有效地提高VB選擇結構程序設計的課堂教學質量。

      參考文獻:

      第2篇

      關鍵詞:程序設計基礎;數據結構;計算思維;教學銜接

      0、引言

      程序設計基礎與數據結構是計算機類專業的兩門專業基礎課,在計算機類專業教學中具有舉足輕重的作用,都旨在培養學生的編程能力和計算思維能力,并為后續課程打下堅實的專業基礎,但在這兩門課程的教學過程中,存在一系列問題,嚴重影響課程的教學效果。筆者分析和研究產生這些實際問題的原因,對這兩門課程的知識融合、內容銜接以及教學實踐等進行探討,提出切實可行的解決方案,更好地實現兩門課程的教學目標。

      1、課程教學內容和教學目標

      程序設計基礎課程是學生接觸的第一門專業基礎課,也是進行計算機編程的入門課程。課程的教學目標是使學生掌握程序設計的基本方法,培養其擁有良好的程序設計風格、較強的軟件開發能力以及一定的計算思維能力,為后續課程打下良好的基礎。

      數據結構是繼程序設計基礎課程之后的一門綜合專業基礎課,是計算機類專業的核心課程之一,具有舉足輕重的作用。它是程序設計基礎課程所講知識的自然延伸和具體應用。對數據結構的理解、掌握和應用拓展,將對學生解決具體實際問題時的數據分析、數據組織、數據處理和編程能力有著深遠的影響。課程的教學目標是培養學生縝密的邏輯思維和數據抽象能力以及學生在軟件設計領域中科學的計算思維能力,幫助學生將數據結構和算法與具體的編程實現相結合并靈活地應用到實踐和工程實際中。

      2、兩門課程間的關系

      從程序與數據結構本身的關系來說,一個好的程序離不開合適的數據結構,而數據結構中算法的實現離不開具體的程序設計。在計算機類專業的課程體系中,數據結構和程序設計基礎課程雖然獨立開設,但是它們之間的聯系是緊密的。在課程設置上,程序設計基礎是數據結構的前導課程,兩門課程一脈相承,不可分割。

      學生對程序設計基礎課程的掌握程度、具備的計算思維和編程能力,直接關系到以程序設計語言實現算法的數據結構課程的教學效果。數據結構課程通過創造性思維的訓練,重點突出數據抽象與程序抽象能力的培養,從而進一步提升學生的計算思維能力和編程能力,但兩門課程在實際教學中存在一些問題,主要原因是課程設置、教學內容、教學方法和教學實踐方式等多方面存在缺陷。經分析,對程序設計基礎和數據結構課程進行知識整合和內容銜接,采用適當的教學方式,改進教學實踐是探討和研究的主要內容。

      3、兩門課程在實際教學中存在的銜接問題

      3.1 兩門課程教學內容的脫離

      目前,在實際教學中,程序設計基礎和數據結構課程雖然關系緊密,但是一直被設定為兩門完全獨立的課程,而且教師在制訂教學大綱和教學目標時容易忽視兩門課程問的聯系,在教學過程中出現一些盲區,要么兩門課程在教學內容上出現不同程度的交叉,要么出現知識銜接的斷層,令學生對兩門課程的內在聯系沒有整體概念和認識,從而導致不能深入系統地學習相關知識。尤其是先行課程序設計基礎的教學內容和課程案例完全脫離了數據結構課程,使數據結構中最頻繁使用的知識和內容在程序設計基礎課程中甚少提及,不能為數據結構課程的講解打下扎實的程序設計基礎。

      3.2 程序設計編程語言與數據結構實現語言不一致

      程序設計基礎課程所教授的編程語言與數據結構教材或實驗所使用的實現語言不一致,如將C++語言作為程序設計基礎的教授語言,而在數據結構的實現上選擇c語言或Java語言,以至于數據結構的理論教學與具體上機編程實現脫節,嚴重影響了上機實驗和課程設計環節。

      3.3 程序設計方法與數據結構實現方法不一致

      程序設計基礎課程中或注重面向過程的程序設計方法,或注重面向對象的程序設計方法,但在數據結構課程中卻很難利用前導課程中學到的程序設計方法實現相關的數據結構和算法,從而影響了學生對數據結構課程知識的應用與實現。另一方面,學生在學習過程中沒有充分理解數據結構課程的作用和實際意義,以至于在實際項目和問題中不知使用什么方法(面向過程或面向對象)分析解決問題,不知如何運用數據結構知識解決實際問題。

      3.4 前導課程對后續課程實踐環節的影響

      數據結構實驗環節相對課堂理論環節較薄弱。此問題的存在多半是因為數據結構具體實現的關鍵技術在程序設計基礎課中未被講解或強調,在進行數據結構算法從理論到偽代碼、再由偽代碼到真代碼轉換的過程中難以真正編程實現,使學生對數據結構的理解和掌握僅停留在抽象層、概念層、理論層,難以上升到實現層,從而影響學生的學習興趣和積極性。同時,課程中的實踐項目過于單一且相對獨立,使實踐環節與實際項目的聯系過于松散,學生運用所學知識解決實際問題的能力和實際工程能力很難得以鍛煉。

      3.5 缺少計算思維能力的培養,缺乏理論知識與實際應用的聯系

      提高學生計算思維能力是程序設計基礎和數據結構課程共同的目標。計算思維是抽象的多個層次上的思維,而抽象是表達實際的方法。然而,現行教學方法過多關注程序設計和數據結構知識點的講解,缺乏對學生思維能力的培養。

      如果缺乏理論聯系實際,那么將影響學生計算思維的培養。數據結構中的知識又太抽象,如果缺乏相應的實際案例對抽象知識加以應用,那么就會導致學生不知道怎樣將所學的知識應用到實際中,缺乏具體問題具體分析和解決的能力。

      3.6 教師本身知識結構欠缺,上機實踐指導教師數量不足

      授課教師知識結構的缺乏將導致一些現實問題:如果程序設計基礎的教師不懂數據結構,那么其自然不會將相關知識引入課堂,同時也缺乏用所教授的語言具體實現數據結構中結構和算法的能力;如果數據結構的教師缺乏相關編程語言知識,那么就會給上機輔導帶來困難。同時,兩門課程具有很強的實踐性,若上機實踐輔導教師不足,將不利于學生編程能力的提升以及相關軟件大賽學生的培養和輔導。

      針對以上實際教學中存在的問題,可知為提高程序設計基礎與數據結構課程的教學效果,根據計算機類專業這兩門課程教學內容和目標,對兩門課程進行知識整合和內容銜接的必要性,對課程銜接的方法和思路等進行探討勢在必行。同時,課程教學不僅要關注知識的傳授,還要培養學生主動獲取知識并綜合已有知識創造新知識的能力。

      4、程序設計基礎和數據結構課程銜接的新方法和思路

      4.1 做好兩門課程教學內容的融合和銜接

      教師需緊密結合計算機類專業的培養目標,精心設計程序設計基礎和數據結構課程的教學內容,既要滿足課程的專業基礎性,又要滿足后續課程學習的需要,嚴密制訂教學大綱,做好程序設計基礎與數據結構教學內容的銜接以及相關教材的選定。

      在程序設計基礎課程教學中,教師需要關注學生計算思維能力的培養,將重點放在講解思路上,教學生如何對問題進行抽象,還要介紹一些簡單的基礎算法和數據結構。程序設計與數據結構的聯系過程必須做到循序漸進,若引入的數據結構相關知識過難,會打擊學生的學習積極性。例如,教師講數組時可引入幾種數據結構中簡單的排序算法冒泡排序、選擇排序等;講完指針和結構體后可引入最基本的數據結構――鏈表;講完嵌套函數調用后可引入“遞歸”,它是數據結構中解決問題的常見思想和算法,可以通過簡單的遞歸函數幫助學生理解遞歸思想和遞歸調用過程,這些是理解數據結構中復雜遞歸函數的基礎。在程序設計基礎教學中,只講遞歸函數的簡單應用,而在數據結構教學中,需要介紹遞歸函數的復雜應用:棧、樹、八皇后問題、N個數的全排列等。圍繞“遞歸”這一重要知識點,從易到難并結合課程本身特點進行理論分析,將有益于整合課程教學內容,引導學生循序漸進地學習和思考。

      針對在程序設計基礎課程中不重要但在數據結構及算法中被廣泛使用的知識點,教師需要在講解程序設計課程時將其點出并告訴學生此知識在后續數據結構課中的重要性,引起學生對該知識點的興趣和重視,如指針的靈活使用、結構體類型的復雜應用、類型重命名、類的拷貝構造函數(深拷貝)、函數模板、類模版等。

      同時,教師要對程序設計基礎課程內容進行適當補充和擴充,如增加c++函數模板、類模板的相關知識,為將泛型程序設計、c++的STL引人數據結構課程奠定知識基礎,縮小教學知識與實際運用的距離,提高學生的動手編程能力和知識運用能力。

      4.2 保證程序設計編程語言與數據結構實現語言的一致

      程序設計基礎課程所教授的編程語言要與數據結構教材或實驗所使用的編程語言一致,這樣不僅能大大提高學生的編程能力,還有利于數據結構課程的上機實現。

      4.3 將面向對象思想引入程序設計與數據結構中

      隨著程序設計方法從傳統的結構化程序設計演化到面向對象程序設計,數據結構在面向對象程序設計中也將成為面向對象的數據結構,且將隨著程序設計理論和技術的發展而不斷變化發展。在程序設計基礎課程中講授面向對象的編程語言如c++語言,既可以實現面向過程的數據結構,又能實現面向對象的數據結構。數據結構課程采用面向對象的觀點講授并以C++語言作為算法的描述工具,從而強化數據結構基本知識和面向對象高級程序設計基本能力的雙基訓練以及實際動手能力培養。在設計數據結構實踐項目時,將面向對象的程序設計思想、面向對象的程序設計語言和數據結構課程教學內容恰當地融合,有效整合兩門課程中的重疊部分,突出各自的側重點,符合當前軟件設計思想和軟件開發趨勢。

      4.4 加強課程中計算思維能力的培養

      在程序設計和數據結構的教學方法上,將面向語法為中心的教學逐漸轉變為面向問題求解的教學,從問題出發采用適當的數據結構,將其抽象成解決問題的算法描述,用程序設計語言實現問題求解,使課程從過去的僅講授孤立的知識點,轉變為講授計算思維和問題求解的過程,從而達到突出思維方法訓練的目的。在程序設計基礎和數據結構授課時盡量將理論聯系實際,將知識點解釋和應用為身邊容易理解的真實案例。例如,講“圖”時,可以把現在流行的復雜網絡、社交網絡引入其中;講解“隊列”時,可將春節買票引入其中,讓學生從身邊的例子理解理論知識的具體應用。對有些案例可以提倡“一題多解”,不局限于一種數據結構、解題思路和實現方法,通過一題多問、一題多解帶動學生探索、比較、尋求更好的解決途徑,達到學生分析解決問題能力的提高和計算思維能力的培養。

      4.5 提升教師能力,配備充足的上機輔導教師

      學校要加強程序設計基礎與數據結構課程相關授課教師整體能力的提升。教師不僅要掌握自己所教授課程的知識,還要對該課程的前續及后續課程內容有所了解,便于維護教學的整體秩序和融合學生的知識體系。同時,教師要積極參與各種軟件大賽和企業培訓,將教授的理論知識和實際項目相結合,達到應用知識解決復雜問題的目的。此外,兩門課程的上機實踐環節要配備足量的輔導教師,不讓學生輸在編程入門的起跑線上。

      4.6 依托程序設計競賽,提高學生的編程能力

      依托全國軟件大賽、ACM大賽等程序設計競賽,將競賽題目引入程序設計基礎和數據結構課堂中。此類題目強調考查學生對各種算法的應用能力,綜合性較強,非常適合輔助學生學習和體會數據結構的妙用,提升學生分析和解決實際問題的能力,引導學生將所學知識準確而靈活地運用到實際生活中,大大提高學生的實踐動手和程序設計能力,促進其知識的融會貫通。另外,通過競賽等多種活動可以為學生提供展現程序設計能力的舞臺,激發學生學習的主動性,培養其計算思維能力。

      例如,在教授程序設計基礎時,講完邏輯表達式和多重循環結構后,可以將大賽中的邏輯推理題目引入教學中并引出常見的解題方法和思路一枚舉法,從而加深對枚舉法的認識。通過采用數據結構中的雙向鏈表和線性數組兩種方式實現大賽中常見的約瑟夫環問題。

      4.7 引入OJ平臺。加強課程實踐環節

      引人在線判題(Online Judge,oJ)系統,提高學生的實踐能力。能力需要以豐富的知識作為支撐,而實踐是能力賴以生長的土壤。在OJ系統中,學生可以在線提交程序源代碼,系統對源代碼進行編譯和執行并通過預先設計的測試數據檢驗程序源代碼的正確性。引入0J系統不僅可以輔助教師批改作業,減輕教師工作壓力,還可以促使學生加強平時上機編程練習,通過編程排名方式提高學生的學習興趣。OJ系統中擁有大量題庫,可以讓學生進行上機實踐,培養自身的計算思維能力,提高編程能力。0J系統不僅可以作為程序設計基礎課程的實踐平臺,還可作為數據結構課程的實踐平臺。

      第3篇

      1.在《C程序設計》與《數據結構》教學中對課程整合概念的理解

      理論上,課程整合是指對課程設置、各課程教育教學目標、教學設計、評價等諸要素作系統的考察與操作。在實際教學中,課程整合是指考慮到各門相互分裂的課程之間的有機聯系,將這些課程綜合化。

      在傳統的教學模式中,《C程序設計》是先行課程,《數據結構》是后續課程,它們都是學習操作系統、數據庫原理和應用、面向對象程序設計等課程的基礎?!禖語言程序設計》是學生最先接觸的結構化程序設計語言,其教學目的主要是使學生了解結構化程序設計的算法和思路,掌握程序設計和調試的基本技巧,培養良好的軟件設計基礎?!稊祿Y構》主要是研究非數值應用問題中數據之間的邏輯關系和對數據的操作,同時還研究如何將具有邏輯關系的數據按一定的存儲方式存放在計算機內。其教學目的主要是使學生掌握數據的邏輯結構、存儲結構及其相應的算法,培養學生解決實際問題的能力,即能夠把現實世界中的客觀問題,變換為在計算機內的表示形式,學會組織數據、選擇算法、養成良好的程序設計風格。

      《數據結構》課程中分析數據之間的邏輯關系和確定數據在計算機內的存儲結構是所有程序設計過程中必須完成的兩大任務,且《數據結構》中算法描述的語言又多采用C語言,兩門課程之間存在著緊密而內在聯系,為兩門課程的整合提供了可能性。

      2.《C程序設計》與《數據結構》的教學現狀

      在傳統的教學模式中,《C程序設計》是先行課程,《數據結構》是后續課程,將兩門課程分開來教學,人為地割斷了它們之間的內在聯系,導致學生在學習《C程序設計》時,僅局限于C語言的語法層面上,不能把C語言的程序設計思路和語法知識具體運用到數據結構的算法中去,使理論知識與實踐運用脫鉤。而在學習《數據結構》時,由于教師的更換和教材的多樣化,任課教師又不得不花掉一、兩周的時間來復習C語言的相關知識,造成了課時的浪費和學生反感。在具體運用時,又出現學生能理解數據結構中的算法和讀懂算法,卻不能運用C語言去實現算法等程序設計能力較差的現象。筆者長期從事這兩門課程的教學工作,一直在探索如何提高這兩門課程的教學效果,培養學生運用C語言這個工具去解決實際問題的能力。

      3.《C程序設計》與《數據結構》課程整合的思路

      在高職院校計算機應用專業的課程體系中,實現《C程序設計》和《數據結構》這兩門課程的整合,要結合職業教育培養實用型人才的目標,根據后續專業課程的需要來確定?!禖程序設計》和《數據結構》課程整合化的思路以C語言為工具,以實踐為中心,重視基礎知識,注重能力培養,對兩門課程教學內容和教學模式進行優化和整合。

      在實施過程中,將這兩門課程整合為一門課程,課程名稱為《C程序設計與數據結構》,在一個學期內完成授課內容。堅持理論聯系實踐的教學模式,突出實踐教學的重要性,去掉繁瑣的理論推導,重新設計教學、實訓大綱,處理教材,合理分配學時。在具體教學中,以C語言為主線,將數據結構的內容溶入到C語言的教學中,對數據結構的內容以“適度夠用”為原則,適當地進行刪減,以滿足高職教育培養應用型人才的教學需要。

      4.《C程序設計》與《數據結構》課程整合的具體實施

      (1)整合后理論課教學的內容和學時分配

      整合后周學時為6節,總學時為102節(按17個教學周計),其中理論課時為68節,上機實踐課時為34節。

      (2)課程整合后的實踐教學設計

      在實踐教學中,要進一步鞏固對理論知識的理解,提高學生靈活運用數據結構和算法的能力,使學生在編程、上機操作、程序調試與正確性驗證等基本技能方面得到訓練和提高。實驗可分兩部分,一是驗證性實驗,主要結合課堂理論教學內容展開,學生可以對在課堂上學到的基本算法進行驗證;二是運用性實驗,組織學生以小組為單位設計一些實用程序,要求學生從實際出發,在具體、真實的環境中分析研究數據對象的特性,構造合理的數據結構以及相應的算法。

      (3)課程整合后的考試要求

      整合后的課程培養目標是提高學生的計算機應用能力,計算機應用能力包括了三個層次:操作使用能力、應用開發能力和創新能力。因此整合后的課程考核,應采取理論基礎閉卷和上機操作開卷相結合的方式進行,綜合評價應從以下三個方面來著手。

      ①筆試。筆試主要是考察學生對理論知識的系統性的理解,可由客觀題型(如選擇、填空題等)和主觀題型組成,客觀題型要立足于基礎知識,小而全,避免死記硬背。主觀題型要靈活多樣,如問題解決分析、程序編寫等。占整個評價的30%。

      ②上機實踐。上機實踐貫穿于整個教學當中,所以要注重過程考核,結合實訓計劃,在各單元模塊結束時,進行隨堂考核,并認真檢查和記錄學生考核情況,作為期末上機實踐成績的一部分。實行各單元過關,有了各單元模塊的考核,到期末上機操作綜合考核時就不成問題了。通過對上機操作實踐的評價,可以考察學生應用計算機解決實際問題的能力。占整個評價的40%。

      ③學生的平時表現。學生的平時表現是指是否認真上課、聽課,上機練習的任務是否獨立完成,上機設計的任務是否有創意,作業是否按時上交等等,這些資料的積累,有利于對學生學習情況的全面認識。學生在整個授課過程中的表現,占整個評價的30%。

      在課程整合中,合理的考核方案能促進學生知識的積累,避免學生考前突擊和死記硬背現象,使學生真正學到知識。

      第4篇

      關鍵詞:目錄式菜單;C51;結構體;函數指針

      中圖分類號:TP368.12

      隨著礦用產品智能化越來越高,人機界面越來越豐富,而在目前礦用產品中,人機界面多基于單片機及按鍵方式實現,對于復雜的人機界面程序設計工作量很大,且存在經常需要修改的問題。因此設計了運行可靠、修改方便的菜單程序框架可以降低工作量,提高產品開發效率,且為以后程序設計建立模板。多級菜單程序的設計方法很多,最典型的方法是根據按鍵動作及顯示界面建立索引關系表,具體實現方法見文獻[1]。該方法基于這個關系表,增加或調整界面時,對結構表修改較大,特別是在界面很多時不方便,在修改及通用性方面差。作者通過總結已往的各種菜單設計方法,根據設計菜單經驗,設計了一種基于C51結構體的目錄式菜單,通過目錄查詢和函數指針調用,實現菜單各種操作功能。

      1 目錄式菜單程序設計

      通過對菜單的共性分析,提煉出菜單結構特點,形成菜單條結構體。一般每個菜單項有菜單標簽和子菜單列表;可以通過上下選擇鍵對子菜單項上下選擇;在選擇后進行確認操作,調用功能函數執行,且可進入下一級子菜單或進入當前菜單的參數修改;在參數修改時通過上下選擇鍵修改;取消或返回可通過取消鍵操作。為實現以上功能首先建立菜單條結構體,并根據菜單功能項目,分級建立菜單結構體,確立菜單的顯示內容、菜單條之間關系及執行的功能等,然后再設計各功能函數。因此本設計的關鍵是要定義好菜單的目錄結構體以及菜單的操作及顯示函數。

      2 結構體定義

      2.1 菜單條結構體定義

      菜單條結構體確立本菜單的顯示內容、附加數據、結構關系、執行功能等屬性,包含內容有當前菜單條數、菜單標簽、菜單條名稱、菜單條數據指針、父菜單指針、子菜單指針、執行功能函數等關系,結構體如下定義。

      struct MenuItem

      { uchar MenuCount; //當前菜單條數

      char *MenuCaption; //菜單標簽

      char *DisplayString; //菜單條名稱

      struct MenuData *DisplayData; //菜單條數據指針

      struct MenuItem *ParentMenus; //父菜單指針

      struct MenuItem *ChildrenMenus; //子菜單指針

      void (*Subs)(); }; //執行功能函數

      2.2 菜單條數據結構體定義

      為了減少程序量和操作方便,在有些最底層菜單后附帶數據,而這些數據的屬性不同,操作顯示都有區別,因此根據他們的共性將數據的屬性和操作、顯示等封裝成結構體,包含內容有當前數據個數、數據名稱、數據屬性、修改操作、顯示操作等,結構體如下定義。

      struct MenuData

      { uchar Count; //數據條數

      char * Name; //數據名稱

      uchar Attribute; //數據屬性,

      void (*Set)(); // 設置函數

      void (*Show)(); }; // 顯示函數

      2.3 菜單目錄結構體定義

      在菜單條結構體基礎上,根據每個界面菜單的內容填寫菜單目錄結構體,再根據具體功能寫各功能函數。菜單目錄結構體示例如下。

      struct MenuItem code Menu[]=

      { {3,"-菜單-", "1 菜單1", &MenuData1, ParentMenu, Menu1, Subs1},

      {3,"-菜單-", "2 菜單2", &MenuData2, ParentMenu, Menu2, Subs2},

      {3,"-菜單-", "3 菜單3", &MenuData3, ParentMenu, Menu3, Subs3},};

      3 菜單目錄操作函數設計

      定義好菜單目錄結構體后,關鍵還要實現菜單目錄檢索和顯示,具體由以下兩個功能函數實現。

      3.1 菜單目錄檢索函數設計

      通過菜單檢索函數建立按鍵操作和菜單目錄的關系,可以在菜單目錄中檢索出當前需要的菜單及其相關的功能。void SearchMenu(void)函數根據按鍵狀態,實現菜單上選、下選、返回、執行菜單功能函數等操作功能。

      3.2 菜單顯示函數設計

      菜單顯示函數根據當前操作狀態顯示菜單條及相關數據,以及實現反白顯示等功能。

      void ShowMenu(void)函數實現菜單標簽、子菜單條顯示,并實現多條子菜單條行循環顯示操作,對選中的菜單條反白顯示等。

      3.3 菜單函數設計

      為了使程序結構一體化,將讀鍵、菜單檢索、菜單顯示等函數封裝到一起,同時還具備對實時數據刷新、超時返回默認界面等功能。

      4 實例分析

      根據以上的目錄式菜單設計方法,以水泵閥門控制箱顯示單元實例應用進行分析。其硬件環境如下,CPU選用C8051F340,采用內部12MHz頻率運行,使用內部4K RAM作為顯存;顯示采用DM160128圖形液晶顯示模塊,不帶字庫,可以顯示16行20列字符或8行10列漢字;輸入采用按鍵和紅外遙控方式,設置有四個功能鍵(上選、下選、確認、取消/返回)。根據該項目的需要,顯示主菜單分實時數據、記錄查詢、參數設置、系統設置、參數校準、系統信息等六大項,而每項有多級子項,總共所有菜單條近300條。根據結構體菜單設計,菜單目錄結構體及數據結構體部分示例如下。

      4.1 主菜單目錄

      struct MenuItem code MainMenu[]=

      { {6,"-主菜單-", "1 實時數據", &NullData, RootMenu, ViewMenu, NullSubs},

      {0,&Null, "2 記錄查詢", &NullData, RootMenu, FindMenu, NullSubs},

      {0,&Null, "3 參數設置", &NullData, RootMenu, SetupMenu, NullSubs},

      {0,&Null, "4 系統設置", &NullData, RootMenu, SystemMenu, NullSubs},

      {0,&Null, "5 出廠校準", &NullData, RootMenu, DebugMenu, NullSubs},

      {0,&Null, "6 系統信息", &NullData, RootMenu, HelpMenu, NullSubs},

      };

      4.2 子菜單目錄

      struct MenuItem code SystemMenu[]=

      { {3,"-系統設置-","1 通信設置",&NullData,MainMenu,ComSetup, CopyCom},

      {0,&Null, "2 時間設置",&NullData, MainMenu, ClockSetup, CopyClock},

      {0,&Null, "3 記錄清除",&NullData, MainMenu, ClearSoe, NullSubs},

      };

      4.3 帶顯示數據子菜單目錄

      struct MenuItem code ComSetup[]=

      {

      { 5, "-通信設置-","1 通信方式:", ComData, SystemMenu, &Null, NullSubs},

      { 0, &Null, "2 通信地址:", ComData, SystemMenu, &Null, NullSubs},

      { 0, &Null, "3 RS485速率:", ComData, SystemMenu, &Null, NullSubs},

      { 0, &Null, "4 CAN速率:", ComData, SystemMenu, &Null, NullSubs},

      { 0, &Null, "5 保存", ComData, SystemMenu, &Null, SaveCom},

      };

      4.4 菜單數據結構體

      struct MenuData code ComData[]=

      { { 5, "Mode", 2, SetCom, ShowCom},

      { 0, "Addr", 2, SetCom, ShowCom},

      { 0, "RS485 Buad", 2, SetCom, ShowCom},

      { 0, "CAN Buad ", 2, SetCom, ShowCom},

      { 0, "Save", 1, SetCom, ShowCom},

      };

      5 目錄式菜單的技術優勢

      本文提出的菜單設計方法在多個項目的顯示單元中的應用實踐,驗證了該方案顯著優點如下:(1)菜單目錄基于C語言結構體定義,菜單內容及菜單項之間的關系明確,一目了然,閱讀修改方便;(2)形成菜單目錄后,增加、刪除和修改菜單只需對應的菜單目錄結構體和對應函數改動,不影響其他部分。(3)菜單條和數據融合成一體,顯示豐富,操作簡便;(4)所有功能采用函數指針調用,程序代碼緊湊,運行穩定可靠;(5)目錄式菜單框架通用性強,可移植性好;(6)根據設置參數或程序運行狀態,可以實現動態變化的菜單。

      6 結束語

      本文介紹了基于C51的結構體和函數指針調用的特點,設計目錄式菜單程序,并在礦用產品中成功的應用。通過該方法設計的菜單具有結構緊湊、性能穩定、功能強、移植性好等優點,具有很好的實用價值。

      參考文獻:

      [1]陸錚,羅嘉.單片機C語言下LCD多級菜單的一種實現方法[J].工礦自動化,2006(01):48-51.

      [2]童長飛.C8051F系列單片機開發與C語言編程[M].北京:北京航空航天大學出版社,2004.

      第5篇

      關鍵詞:C語言;程序設計;教學;結構體;實驗

      中圖分類號: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.

      第6篇

      全書共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博士是路德學院數學與計算機科學系教授。

      本書介紹了初級與高級的數據結構和算法問題,每一章開始提供了學習目標,復習題和編程練習,以及眾多的例證;同時在相關的網站提供可下載的程序和補充文件。本書可以作為計算機學科相關專業的教材或參考書,同時對計算機科技工作者也有參考價值。

      第7篇

      關鍵詞:循環結構;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.

      中文字幕一区二区三区免费看