時間:2023-08-03 16:08:44
序論:寫作是一種深度的自我表達。它要求我們深入探索自己的思想和情感,挖掘那些隱藏在內心深處的真相,好投稿為您帶來了七篇程序設計的結構范文,愿它們成為您寫作過程中的靈感催化劑,助力您的創作。
1.在《C程序設計》與《數據結構》教學中對課程整合概念的理解
理論上,課程整合是指對課程設置、各課程教育教學目標、教學設計、評價等諸要素作系統的考察與操作。在實際教學中,課程整合是指考慮到各門相互分裂的課程之間的有機聯系,將這些課程綜合化。
在傳統的教學模式中,《C程序設計》是先行課程,《數據結構》是后續課程,它們都是學習操作系統、數據庫原理和應用、面向對象程序設計等課程的基礎。《C語言程序設計》是學生最先接觸的結構化程序設計語言,其教學目的主要是使學生了解結構化程序設計的算法和思路,掌握程序設計和調試的基本技巧,培養良好的軟件設計基礎。《數據結構》主要是研究非數值應用問題中數據之間的邏輯關系和對數據的操作,同時還研究如何將具有邏輯關系的數據按一定的存儲方式存放在計算機內。其教學目的主要是使學生掌握數據的邏輯結構、存儲結構及其相應的算法,培養學生解決實際問題的能力,即能夠把現實世界中的客觀問題,變換為在計算機內的表示形式,學會組織數據、選擇算法、養成良好的程序設計風格。
《數據結構》課程中分析數據之間的邏輯關系和確定數據在計算機內的存儲結構是所有程序設計過程中必須完成的兩大任務,且《數據結構》中算法描述的語言又多采用C語言,兩門課程之間存在著緊密而內在聯系,為兩門課程的整合提供了可能性。
2.《C程序設計》與《數據結構》的教學現狀
在傳統的教學模式中,《C程序設計》是先行課程,《數據結構》是后續課程,將兩門課程分開來教學,人為地割斷了它們之間的內在聯系,導致學生在學習《C程序設計》時,僅局限于C語言的語法層面上,不能把C語言的程序設計思路和語法知識具體運用到數據結構的算法中去,使理論知識與實踐運用脫鉤。而在學習《數據結構》時,由于教師的更換和教材的多樣化,任課教師又不得不花掉一、兩周的時間來復習C語言的相關知識,造成了課時的浪費和學生反感。在具體運用時,又出現學生能理解數據結構中的算法和讀懂算法,卻不能運用C語言去實現算法等程序設計能力較差的現象。筆者長期從事這兩門課程的教學工作,一直在探索如何提高這兩門課程的教學效果,培養學生運用C語言這個工具去解決實際問題的能力。
3.《C程序設計》與《數據結構》課程整合的思路
在高職院校計算機應用專業的課程體系中,實現《C程序設計》和《數據結構》這兩門課程的整合,要結合職業教育培養實用型人才的目標,根據后續專業課程的需要來確定。《C程序設計》和《數據結構》課程整合化的思路以C語言為工具,以實踐為中心,重視基礎知識,注重能力培養,對兩門課程教學內容和教學模式進行優化和整合。
在實施過程中,將這兩門課程整合為一門課程,課程名稱為《C程序設計與數據結構》,在一個學期內完成授課內容。堅持理論聯系實踐的教學模式,突出實踐教學的重要性,去掉繁瑣的理論推導,重新設計教學、實訓大綱,處理教材,合理分配學時。在具體教學中,以C語言為主線,將數據結構的內容溶入到C語言的教學中,對數據結構的內容以“適度夠用”為原則,適當地進行刪減,以滿足高職教育培養應用型人才的教學需要。
4.《C程序設計》與《數據結構》課程整合的具體實施
(1)整合后理論課教學的內容和學時分配
整合后周學時為6節,總學時為102節(按17個教學周計),其中理論課時為68節,上機實踐課時為34節。
(2)課程整合后的實踐教學設計
在實踐教學中,要進一步鞏固對理論知識的理解,提高學生靈活運用數據結構和算法的能力,使學生在編程、上機操作、程序調試與正確性驗證等基本技能方面得到訓練和提高。實驗可分兩部分,一是驗證性實驗,主要結合課堂理論教學內容展開,學生可以對在課堂上學到的基本算法進行驗證;二是運用性實驗,組織學生以小組為單位設計一些實用程序,要求學生從實際出發,在具體、真實的環境中分析研究數據對象的特性,構造合理的數據結構以及相應的算法。
(3)課程整合后的考試要求
整合后的課程培養目標是提高學生的計算機應用能力,計算機應用能力包括了三個層次:操作使用能力、應用開發能力和創新能力。因此整合后的課程考核,應采取理論基礎閉卷和上機操作開卷相結合的方式進行,綜合評價應從以下三個方面來著手。
①筆試。筆試主要是考察學生對理論知識的系統性的理解,可由客觀題型(如選擇、填空題等)和主觀題型組成,客觀題型要立足于基礎知識,小而全,避免死記硬背。主觀題型要靈活多樣,如問題解決分析、程序編寫等。占整個評價的30%。
②上機實踐。上機實踐貫穿于整個教學當中,所以要注重過程考核,結合實訓計劃,在各單元模塊結束時,進行隨堂考核,并認真檢查和記錄學生考核情況,作為期末上機實踐成績的一部分。實行各單元過關,有了各單元模塊的考核,到期末上機操作綜合考核時就不成問題了。通過對上機操作實踐的評價,可以考察學生應用計算機解決實際問題的能力。占整個評價的40%。
③學生的平時表現。學生的平時表現是指是否認真上課、聽課,上機練習的任務是否獨立完成,上機設計的任務是否有創意,作業是否按時上交等等,這些資料的積累,有利于對學生學習情況的全面認識。學生在整個授課過程中的表現,占整個評價的30%。
在課程整合中,合理的考核方案能促進學生知識的積累,避免學生考前突擊和死記硬背現象,使學生真正學到知識。
關鍵詞:結構化程序設計;順序結構;選擇結構;循環結構;算法
當前,計算機技術飛速發展,程序設計技術已從結構化程序設計技術向面向對象程序設計技術過渡,對一個規模較大的應用程序,總體框架是由面向對象程序設計構搭而成,而在局部實現時仍需采用結構化程序設計技術。C語言是一種很好的結構化程序設計語言,因此,筆者論述了C中的的結構化程序設計的方法。
結構化程序設計(STRUCTURED PROGRAMING,簡稱SP)的概念是由荷蘭學者E·W.DUKSTRA等人在20世紀60年代后期提出的,是以模塊化設計為中心,將原來較為復雜的問題化簡為一系列簡單模塊的設計,也就是將—個大的計算任務劃分為一個個比較小的任務,這些小任務均由函數來完成。而函數既可以是C的標準庫函數。也可以是自定義函數。在C中,一個具備一定規模的C程序往往是由多個函數組成,其中必有一個名為main的主函數,由main來調用其他函數,必要的話,其他函數還可以調用另外的函數。同一函數可以被一個或多個函數調用一次或多次。模塊的獨立性還為擴充已有的系統、建立新系統帶來了不少的方便,因為我們可以充分利用現有的模塊作積木式的擴展。
結構化程序設計的思想是一個程序的任何邏輯問題,均可用順序結構、選擇結構和循環結構這3種基本結構來描述。順序結構的程序流程是按語句的書寫順序依次執行;選擇結構是對給定條件進行判斷,根據判斷結果決定執行兩分支中的一個分支或多分支中的一個分支;循環結構是在給定條件成立的情況下,反復執行某個程序段。實現這些程序流程的語句都是流程控制語句。流程控制語句在程序設計中起著重要的作用,通過3種基本控制結構使結構化程序具有唯一的人口和出口,沒有死循環,而且程序的靜態形式與動態執行形式之間具有良好的對應關系。在C語言中,有4種語句是順序執行的:①空語句,光有一個分號“;”作為語句結束符,它表示什么也不做。②表達式語句,表達式后面加一個分號,表達式語句主要有賦值語句、自加減運算符構成的語句和逗號表達式語句。③函數調用語句,它是由一個函數調用加上一個分號組成的。④復合語句,由“{”和“}”把一些變量說明和語句組合放在一起,又稱為語句塊。選擇語句有if語句和switch語句。循環語句有for,while和do-while語句以及一些輔助流程轉向語句如continue,break,goto等。順序結構,選擇結構和循環結構共同作為各種復雜程序的基本構造單元,由這3種結構經過反復嵌套構成的程序稱為結構化程序,也就是說,結構化程序是由上述3種基本結構組成的。但如果在編程過程中無限制地使用轉移語句(goto),會使程序的控制流程強制性地向前或向后跳轉而導致程序的流程無序可循,結構雜亂無章。結構化構造減少了程序的復雜性,提高了可靠性、可測試性和可維護性,使用少數的基本結構,就可使程序邏輯結構清晰,易讀易懂,并且容易驗證程序的正確性。對—個初學計算機語言的人來說。最重要的就是要有正確的程序流程概念,不僅要懂得而且要靈活應用。由此可見,用結構化方法設計的結構是清晰的,有利于編寫出結構良好的程序。因此。結構化程序設計方法的主要原則可以概括為自頂向下,逐步求精,模塊化,限制使用goto語句。將程序設計針對的問題進行分解,直到分解到對應于一個個功能更簡單,又獨立的模塊,每個模塊再分解到上述3種基本程序結構。
結構程序化設計方法如下:
結構化程序設計方法是按照模塊劃分原則以提高程序可讀性和易維護性、可調性和可擴充性為目標的一種程序設計方法。在結構化的程序設計中,只允許三種基本的程序結構形式,它們是順序結構、分支結構、(包括多分支結構)和循環結構,這三種基本結構的共同特點是只允許有一個流動入口和一個出口,僅有這三種基本結構組成的程序稱為結構化程序。結構化程序設計適用于程序規模較大的情況,對于規模較小程序也可采用非結構化程序設計方法。
(來源:文章屋網 )
關鍵詞: 高級語言程序設計 流程圖 控件 子程序 參數傳遞
一方面中職學生在初中階段基礎較差,另一方面對于高級語言程序設計的教學不同教材編寫者有不同的思路,為了適應中職學生的學習,在教學中如何更便于學生掌握高級語言程序設計,我在長期從事高級語言程序設計教學的過程中摸索出一套針對中職學生教學的組織教材的思路,下面就以Visual Basic語言為教學背景談談教材組織,請同行予以批評指正。
首先,讓學生熟悉所學的高級語言程序設計的程序結構。不同的高級語言的程序結構的描述過程是不同的,以Visual Basic語言為例,它的程序結構大至如下:
End Sub
因此,讓學生熟悉上述的結構描述方法,讓它像模板一樣印在學生的腦袋中,對于學生對該語言的編寫格式的直觀認識及后續的學習會起到良好的作用,同時也會為后續學習數據類型、運算符、表達式和常用函數的上機調試掃除障礙。
其次,讓學生熟悉所學的高級語言程序設計上機的調試環境和掌握基本的調試步驟。對于程序設計的最終結果是否正確,上機調試是必過的一關,不同的高級語言程序上機的調試環境是不同的,有的調試環境功能單一,有的調試環境功能很多,我認為首先掌握基本的調試功能,再根據需要逐步介紹和掌握調試環境所提供的其他功能,這樣更有利于學生學習。以Visual Basic語言為例,我們要求學生首先掌握以下幾個技能:建立一個新的工程,打開代碼編寫環境,保存一個工程,打開已有的工程,知道運行程序,自如查看運行的結果,并從運行結果中返回并重新修改程序。至于Visual Basic語言集成開發環境中所具有的其他功能,則根據具體調試演示時的需要零散分開,并個別介紹,這樣學生將掌握得較好。
再次,讓學生掌握程序的基本輸入、輸出語句或函數的功能及用法。程序要進行調試就要有各種各樣測試的數據及根據測試數據運行后顯示出的測試結果,以驗證所編寫程序是否正確,這就要求掌握基本的輸入輸出語句的用法。在Visual Basic語言中,inputbox()函數和print語句的用法就是必須掌握的。通過以上,學生掌握了程序設計的基本“骨架”,以及輸入輸出語句的用法,就可以進行最簡單的順序結構程序的設計了,從而在較短的時間里體驗到成就感,為后繼學習樹立信心。
另外,在講解順序結構程序設計的過程中就要開始逐步地把流程圖的識讀及使用方法教授給學生。流程圖能直觀地表示整個程序設計的流程, 程序的編寫只是對流程圖的一種語句的細化過程,因此看懂流程圖既方便程序設計的講解,又便于學生在課后通過流程圖了解程序設計的思路進行復習或思考,從而避免由于對識讀程序的困難造成理解上的不便。我曾試圖讓學生沒看流程圖而直接通過程序語句來理解程序設計思路,與讓學生通過流程圖來理解程序設計的思路相比,顯然前一種方式對學生來說要困難得多,而且時間長了就很難再理解,而通過流程圖顯然更容易,即使時間久了重新識讀起來也相當容易。
不要把控件的功能及屬性單獨介紹。以Visual Basic語言為例,很多教材都是以順序結構、選擇結構、循環結構、常用控件的順序來組織教學,我認為這樣讓學生感到很枯燥。因為很多實例在內容上涉及許多數學的知識,而學生本來數學基礎就很差,這樣學生厭學的情緒會增加,既不利于教學,又不利于學生學習。因此在教學中應把后面要掌握的控件分別有意識地穿插在順序結構、選擇結構、循環結構課堂的實例中,讓學生生動地用各種控件結合順序結構、選擇結構、循環結構程序實例來學習程序設計。一方面,學生不僅有濃厚的興趣而且很容易體驗到成功的喜悅,另一方面又聯系緊密、節省課時。當然這樣穿插教學,程序樣例的選擇就非常關鍵,每個樣例都要精挑細選,每節新課牽涉到的控件以1~2個為宜,否則控件太多的話就會造成課堂時間不足,學生掌握得也不好。
最后就是子程序與參數的傳遞要放在該門課程快結束時再介紹。這部分內容對學生來說相對較難,特別是參數傳遞,若在學生還未掌握好程序設計或程序設計還不熟練時就介紹,學生就會思路混亂,從而增加學習難度。若學生都已經能熟練地進行程序設計,在此基礎上再進一步地增加子程序與參數的傳遞的知識,就會錦上添花,學生和老師都會有事半功倍的體驗。
當然,對于教材中的其他內容,則基本上根據教材編寫的既定內容進行講授。以上是我在高級語言程序設計教學中的體會,至于是否適應其他老師的課堂教學要求,還要在實際教學中進一步探討。
參考文獻:
關鍵詞:面向過程;面向對象;泛型;軟件工程;程序設計方法
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2012)02-0333-02
Comparison of Program Design Method in Software Engineering
CHEN Rong, CHEN Feng
(Department of Information Engineering, Tibet University for Nationalities, Xianyang 712082, China)
Abstract: In the field of software engineering, has appeared three kinds of program design method, they are process-oriented program? ming method, object-oriented programming method and generic programming method. This paper analyzed and compared three kinds of program design methods deeply.
Key words: process-oriented; object-oriented; generic; software engineering; programming method
20世紀60年代中期,隨著軟件系統的規模和復雜程度的不斷增加,軟件可靠性問題也不斷突出,出現了“軟件危機”。1968年,正式提示“軟件工程”一詞,并形成一門新的工程學科[1]。在軟件工程領域,先后出現了三種程序設計方法,分別是面向過程的程序設計、面向對象的程序設計和泛型程序設計。
本文對三類方法――面向過程程序設計方法、面向對象程序設計方法、泛型程序設計方法,進行了深入分析和比較。
1面向過程、面向對象、泛型概述
20世紀70年代,面向過程的程序設計方法(也稱結構化方法)出現并在早期的軟件工程領域占用主導地位。面向過程采用是自頂向下、逐步求精、模塊化等設計原則,將軟件系統分解為若干可獨立的子模塊。各個模塊完成后組合起來,成為一個最終的軟件系統。隨著軟件工程的發展,出現了軟件生產率低、軟件維護困難等難以解決的問題[1]。
20世紀80年代,面向對象的程序設計方法應運而生,它解決了面向過程的程序設計方法的缺點,提高了軟件的生產率和方便軟件的維護。現在已成為目前主流的程序設計方法。面向對象將軟件系統分解成一個個的對象,每個對象都是通過對現實世界的分析、理解而得出的。面向對象更接近于人類認知世界的方式,并通過以類和繼承為構造機制將現實世界構建成對應的軟件系統。對于面向對象一些難以克服的缺點,如它不能將所有關系都用繼承來實現,抽象程度不夠高,通用性不足等問題,提出了泛型程序設計[2-3]。
近年來,泛型程序設計出現并發展。泛型的特點是抽象程度很高,將程序寫得盡可能通用,可適合多種數據類型的操作,同時不損失效率。泛型程序設計的過程是發現類型需求、分析類型需求之間的關系,并運用這種類型需求關系實現軟件系統的結構和邏輯[2]。
2面向過程、面向對象、泛型的比較
面向過程程序設計以模塊為中心,采用自頂向下、逐步求精的開發方法,將軟件系統分解為若干可獨立的子模塊,這些模塊形成樹狀結構,表現了各個模塊相互調用的關系;每一個模塊內部均由順序、選擇和循環三種基本結構組成。各個模塊完成后組合起來,成為一個最終的軟件系統。面向過程注重實現過程的順序,它的抽象層次低,實現簡單。它適合解決簡單問題和小規模的問題。
面向對象程序設計以對象為中心,將軟件系統分解成一個個的對象,把屬性和這組屬性上的專用操作進行封裝放在一起作為一個對象,以類和繼承為構造機制將客觀世界構建成軟件系統。同一個對象間通過消息傳遞來實現服務的請求。和面向過程相比,面向對象使用對象分解取代了傳統的功能分解。面向對象的特征是封裝(將數據和代碼放到對象里面,從對象外部不能直接訪問或修改數據和代碼)、繼承(從父類直接獲得的屬性和操作,可重新定義)、多態(父對象定義的一個方法,允許子對象以適合自己的方式去實現消息)等。面向對象注重對象的分析和設計,它的抽象層次高,實現復雜。它適用于復雜問題,特別是對象間形成層 次關系的問題。
泛型程序設計以類型需求為中心,將程序寫得盡可能通用,可適合多種數據類型的操作,同時不損失效率。泛型程序設計的過程是發現類型需求、分析類型需求之間的關系,并運用這種類型需求關系實現軟件系統結構和邏輯的過程。泛型設計的目標是將算法從對象的行為中分離出來,做到算法的設計與數據結構無關,從而實現軟件的復用。它通過將數據結構與算法之間的強禍合關系削弱為弱禍合關系,來實現軟件的復用。它有三個重要概念:概念、模型、強化[2],概念是與具體數據類型無關的一組定義,支持數據類型的操作。模型是當某數據類型使用此概念時,稱為此概念的一個模型。如果某個概念擁有了其他一個或概念的所有功能,稱為這個概念是其他一個或多個概念的強化。泛型注重軟件的高度抽象和通用性,因而實現很復雜。它適用于很復雜問題,特別是需要高度抽象和通用性的問題。
同時,三類程序設計方法在安全性和可靠性方面都是安全和可靠的。表1給出三類程序方法的比較。
表1三類程序設計方法的比較
通過上面的分析,我們得出,三種方法各有其優點。對于簡單的、小規模的問題域,面向過程的程序設計是最合適的;對于繼承和行為多態起主要作用的應用域,面向對象的程序設計是最合適的;而對于那些需要解決一類相似需求的應用域,泛型程序設計是最合適的。
3結束語
軟件工程為研究和克服“軟件危機”而出現,在軟件工程領域的程序設計方法方面,先后出現了三種程序設計方法,面向過程的程序設計、面向對象的程序設計和泛型程序設計。本文對三類方法――面向過程程序設計方法、面向對象程序設計方法、泛型程序設計方法,進行了深入分析和比較。三種方法各有其特點,如果能將三種方法的優點結合,將會更好地解決軟件開發領域的實際問題。
參考文獻:
[1]李惠明,敖廣武.軟件工程[M].沈陽:東北大學出版社,2010.
流程圖
一般來講,流程圖是由一些圖形框和流程線組成的,其中圖形框表示各種操作的類型,圖形框中的文字和符號表示操作的內容,流程線表示操作的先后次序。流程圖有三種基本結構:順序結構、分支結構、循環結構。程序的靈魂是算法,而流程圖是一種很好的算法表示方法,它的特點是結構清晰、直觀,且容易學習和掌握。
表 標準流程圖符號
流程圖是程序設計中最基本、最重要的分析技術(或稱為診斷工具),它是程序分析過程中最基本的工具,可以使學生分析出知識的結構、幫助學生理解知識間的相互關系。除此之外,流程圖在程序設計教學中還具有如下功能。
1. 流程圖作為一種教的技能,已經被許多教師掌握和應用,并取得了很好的效果。
2. 流程圖作為一種教的策略,能有效地改變學生對程序設計算法的認知方式,切實提高教師的教學效果。
3. 流程圖作為一種學習的策略,能促進學生合作學習和創造性學習,最終使學生學會學習。
流程圖在教學中的應用
教師備課
教師在備課過程中,習慣采用書面語言的方式撰寫教案,如果遇到較復雜的教學問題,多數情況下都要制作教學課件。自從將流程圖引入到小學信息技術課上進行嘗試以來,教師們清楚地發現,采用流程圖的方式繪制教學過程其實就是教師備課的全過程。在這個過程中,教師通過規劃、分析、繪制流程圖,可以非常清晰地了解到本節課教學內容、各個環節之間的邏輯關系,在教學中應該考慮的問題可以在繪制流程圖的過程中全部呈現出來。
問題直觀分析
課堂上,對于較復雜問題的研究,教師通過流程圖的方式呈現知識要點,使學生非常形象、直觀地看到每一條語句之間的邏輯關系,這樣比教師以條目的形式呈現給學生更加便于學生記憶式的學習。此外,課堂上還可以利用流程圖,將學生表述出來的想法和思路記錄下來以編寫程序,有效地激發學生學習程序設計的興趣,提高學生邏輯思維能力。
學生動手實踐
在教學中,經常需要學生進行一些創作,而教師往往會抱怨學生只有簡單的模仿卻不會獨立創作。而在引入流程圖以后,學生對創作感覺豁然開朗,同時流程圖可以讓學生對一個程序進行分析,以達到比較嚴謹的思維方式。
例如,在教學“利用VB編寫登錄密碼程序”時,采取如下教學過程。
師:我們先一起看程序實現的過程,并用流程圖的方法進行分析。觀察流程圖,想一想今天我們編寫的程序的執行過程和以往學習機器人編程有哪些相同之處?誰能試著邊分析邊把這個流程圖轉換成今天的程序流程圖?
圖 流程圖示例
這節課是選擇結構程序編程的基礎課,通過具體的流程圖例子,講解如何正確使用選擇結構語句,來引導學生理解VB選擇結構以及程序設計思想,逐步了解VB編程基本方法和步驟。通過分析程序流程圖,引出選擇結構,學生編寫程序,利用程序編寫帶出“用選擇結構解決問題”這一教學重點。在師生共同分析下,將機器人程序進行遷移,探究討論和上機實踐,提高學生的學習興趣,運用流程圖解決了教學重點與難點。
流程圖教學所引發的一些思考
流程圖不可能包羅萬象,也不必包羅萬象。我們不能要求所有教學都要用流程圖描述,否則就犯了教條主義錯誤,就會滑向繁瑣哲學的陷阱。我們要明確,流程圖是把復雜的事情簡單化,把簡單的事情規范化。
在程序設計教學中發現這樣一種現象:很多學生表面上對信息技術課非常感興趣,到計算機教室上課的熱情很高,但一到學習程序設計時,卻發現很難激發他們的興趣,有的學生甚至覺得學習程序設計是一種負擔,學習上缺乏主動性。分析其原因,我們認為主要有以下三方面。
一是很多學生之所以對計算機感興趣,是因為他們熱衷于上網、聊天、游戲等電腦娛樂,而對于程序設計,他們認為要學好這個模塊很困難,缺乏自信心。
二是程序設計本身比較枯燥、嚴謹,較難理解,學習本模塊對邏輯思維有一定的要求,要求學生的注意力非常集中。
三是很多學生認為程序設計沒有實際用途,所以漸漸對教師教授的內容失去了興趣,學習也變成被教師“牽著鼻子走”。因此,激發學生的學習興趣,幫助學生樹立信心,使其順利進入程序設計的學習,是至關重要的。
通過分析,我們認為教師應做到如下幾點。
首先,在開始學習程序設計內容時,向學生展示往屆同學創作的一些經典范例,請他們試用,并就界面設計是否美觀、功能設計是否合理等方面提出自己的看法,激發他們的求知欲,樹立學習程序設計的自信心。在以后教學中,注意選擇學生學習與生活中熟悉的實例作為學習活動的例子,使學生感到親切,有利于學生順利進入課程的學習。
其次,在教學中,考慮學生身心發展及心理年齡特點,利用一些學生生活中熟悉的例子進行對比,結合流程圖輔助學生理解難點知識。如選擇結構的問題,可以將選擇過程比作教師的批改作業過程,對就畫勾,錯就畫叉。通過這一類對比,學生很快就可以寫出正確的代碼。這樣不僅可以幫助學生理解算法,同時可以減少他們對程序設計的畏懼感,激發他們的學習興趣。
再次,在教學中要注意引導學生利用所學的知識去解決學習與生活中的實際問題,使學生有一種成就感,如指導學生制作電腦登錄密碼窗口等。
關鍵詞: 《C語言程序設計》 程序案例 計算思維 流程圖
1.引言
《C語言程序設計》課程的實踐性是很強的,理論聯系實際是這門課的特點,怎樣利用所學理論知識解決實際問題是學習這門課的重點,也是難點。多年的教學實踐表明,在教學過程中使用計算思維的方法解決問題,對培養學生的綜合應用能力是有益的,通過使用流程圖描述算法,學生將更好地理解和掌握結構化程序設計方法。
2.教學中充分調動學生學習的積極性
學生只有對C語言程序有濃厚的興趣,才會積極和創造性地學習??蓮囊韵聨讉€方面探討:
(1)強調學生學習C語言的重要性。突出教學重點,使學生明確學習任務。在首次課堂教學中,教師一定要向學生講解清楚C語言課程的教學目標(為什么學習編程或程序設計)。對于C語言程序設計課程的教學目標,可有如下三方面的講解,學習基本的編程知識、培養求解問題的能力和具備一定的創新素質。知識的傳授和學習應融入問題求解中;問題求解能力是創新的基礎。
(2)結合《C語言全國計算機等級考試》的試題庫進行教學,學生學習起來更有動力。試題庫包括筆試試題庫和上機試題庫。試題庫按章節分類,題目類型以程序設計為主。筆試題型有單項選擇、程序分析、程序填空、程序改錯和程序設計,上機題型有程序改錯、程序填空和程序設計。
(3)利用Visual c++6.0工具進行C語言程序教學,培養學生的學習興趣。VC是一種基于Windows操作系統的可視化集成開發環境,是廣泛使用的一種開發工具。VC程序的兩種模式是WINAPI方式和MFC方式。應用這兩種模式能夠有效提高教學質量,激發學生的學習興趣。
3.教學內容的設置
上課內容安排不盡合理,對于實踐教學環節重視不夠,難以提高學生的積極性。教師應理論聯系實際,注重編程實現的示范性,讓學生清楚地看到教師編寫代碼和程序調試的過程和運行結果。上課安排內容應包括兩部分:一部分為學習基本知識,對基礎知識的理解和掌握。另一部分是理論聯系實際,對實際案例問題的分析引導學生,并且案例留有思考空間,使學生舉一反三,培養學生創造性思考的能力。比如在第一次課告訴學生C語言的十四種語句,既讓學生對C語言有全面的認識,又消除學生對C語言的畏難情緒。C語言的語句概括起來只有十四種,即定義變量語句、賦值語句、返回語句、函數聲明語句、函數調用語句、分支(選擇)語句(共三種分支語句)、循環語句(共三種循環語句)、break語句、Conitnue語句和復合語句。所有的C程序,都是由其中的某些語句組成的。在具體介紹這些語句的時候,一定要完整清楚地列出各種語句的語法格式。以后講C程序的時候,會提問學生這個程序中包含哪些C語句,學生比較容易看明白C程序的語句組成,幫助學生很快讀懂程序,有利于改正學生編寫程序時的常見語法錯誤。
4.實驗指導書建設
學習C語言的很多學生都認為概念易懂,程序難寫,其實主要是缺乏足夠的實踐和練習。依據主教材結構和實際需要,上機課結合課本《C語言程序設計上機指導》進行相關和有趣的案例的程序運行。學生分析算法、畫出流程圖到寫出程序,并親自運行出結果,會給學生很大的成就感。要將計算思維的方法應用到程序設計,設計各種算法以實現功能,并拓寬思路,掌握C語言的概念和編程方法。
5.案例設計與計算思維相結合
學習C語言,目的不是僅僅懂得一門程序設計語言,更重要的是讓學生的編程思維得到鍛煉和提高。C語言學習分成以下三個循序漸進的部分:第一部分是入門,主要介紹C語言程序的基本結構、數據的表達方式、基本表達式語句、C語言程序的運行方式等。這部分可以設計由簡單表達式語句組成的按順序執行的程序。第二部分是程序的基本結構,主要介紹程序設計的簡單算法表示方法,分支結構和循環結構。這部分能用計算思維的方法,設計簡單的算法,根據算法編寫程序,掌握思考問題和解決問題的方法。第三部分是程序設計方法和手段的提高,主要介紹程序的模塊化實現方法和更多的程序設計方法。這部分能采用計算思維的方式掌握模塊化的程序設計方法,對問題進行分解,靈活地使用指針、結構、文件、位運算等方法編寫程序。
6.案例設計實例
編寫程序計算學生年齡的遞歸函數:已知第一位學生年齡最小為10歲,其余學生一個比一個大2歲,求第5位學生的年齡。分析得到的遞歸公式如下:
age=10(n=1)age(n-1)+2(n>1)
在遞歸公式中,使用數字1為回歸的條件,使用IFELSE語句決定是遞推還是回歸。
根據問題得出流程圖和程序為:
只有寫出遞歸算法的數學公式,才能編寫出遞歸函數,從而很容易根據遞歸問題描述寫出遞歸公式,進而寫出遞歸程序。
7.結語
“基于問題求解的C語言”教學模式,隨著我國計算機技術的應用和發展,為了適應社會的需求,培養學生解決問題的能力,增強學生自主能動性和動手操作能力,讓學生成為社會的技能型人才,都是有益的。實踐證明,借助流程圖表達算法,能讓學生更好地理解結構化程序設計的思想,更好地掌握C程序設計的核心方法。
參考文獻:
[1]李麗娟.C語言程序設計教程實驗指導與習題解答[M].北京:人民郵電出版社,2013.
[2]譚浩強.C程序設計[M].北京:清華大學出版社,1999.
[3]魏書堤,趙輝煌,鄧紅衛.基于計算思維的C語言教學案例設計[J].當代教育理論與實踐,2014(3).
[4]但志平,汪東,王安慧,任小燕.地方高校C語言教學改革的探討與分析[J].教育教學論壇,2014.5.