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