時間:2023-07-16 08:48:45
序論:好文章的創作是一個不斷探索和完善的過程,我們為您推薦十篇程序設計的結構范例,希望它們能助您一臂之力,提升您的閱讀品質,帶來更深刻的閱讀感受。
理論上,課程整合是指對課程設置、各課程教育教學目標、教學設計、評價等諸要素作系統的考察與操作。在實際教學中,課程整合是指考慮到各門相互分裂的課程之間的有機聯系,將這些課程綜合化。
在傳統的教學模式中,《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%。
作者Kent D.Lee博士是美國艾奧瓦洲路德學院計算機科學教授,已成功出版兩本著作:Python編程基礎和編程語言基礎。另一作者Steve Hubbard博士是路德學院數學與計算機科學系教授。
中圖分類號:G64文獻標識碼:B
文章編號:1672-5913(2007)02-0023-04
1 引言
計算機教育是高等教育的基礎之一,而程序設計基礎是一門十分重要的計算機基礎課程。運用現代教育技術的先進理論──建構主義理論構建程序設計基礎的新型教學結構,不僅有利于程序設計基礎學科的自身建設,更有利于培養和提高廣大學生的創新思維、創新能力。
2 建構主義理論
建構主義理論是當今國際教育界影響較大,并日益顯示其強大生命力的一種新的、較成熟的教育理論,它對于我們深入教育改革、進行學科教育研究等都有重要的借鑒和啟示作用。建構主義理論的核心觀點是:人作為認知主體對知識的獲取不是被動地接受、而是主動加工建構的,即學習知識是“認知主體”的內部心理過程,并把學習者看作是“信息加工主體”,而不再是“刺激──反應”的行為過程,而把學習者看作對外部刺激作出被動反應的“知識灌輸對象”。也就是說,學習是學習者在原有知識的基礎上借助外來信息、通過雙向、交互作用來加工建構的認知過程,用一句話可概括為:以學生為中心,強調學生對知識的主動探索、主動發現和對所學知識意義的主動建構(而不是像傳統教學那樣,只是把知識從教師頭腦中傳送到學生的筆記本上)。因此,建構主義理論的主要目的是讓學生自主建構自身知識,教師只是起到通過科學的教學方法和手段幫助學生積極主動完成知識建
構的輔助、指導作用。
3 運用建構主義理論構建程序設計基礎的新型教學結構
3.1程序設計基礎的傳統教學結構
程序設計基礎的傳統教學結構是以教師為中心,教師講、學生聽,主要靠教師向學生灌輸知識,作為認知主體的學生在教學過程中自始至終處于被動狀態,難以發揮其主動性、積極性。這樣的教學,既不能保證教學的質量與效率,又不利于培養學生的發散性思維、批判性思維和創造性思維,也不利于創造型人材的成長。在程序設計基礎的具體教學內容安排上,過于注重語句、語法和一些細節,基本上是以高級語言自身的體系為脈絡展開滿堂灌式的講解,沒有把邏輯和編程解題思路放在主體地位上;對如何分析問題和解決問題啟發和引導不夠,對學生的編程、上機解題的能力訓練不夠,直接導致學生普遍反映該課程枯燥難學,而且學過之后,不能用來很好地解決實際問題。在教學評價上,考試是“指揮棒”,它對教學目標、教學過程有著較大的負面影響,許多學生就是為了通過考試而學,學習過程中表現得十分被動,教師為了合格率而教,教學效果自然不好,也就更談不上學生創造思維、創造能力的培養了。
3.2運用建構主義理論建構程序設計基礎的新型教學結構
運用建構主義理論改革傳統的教學結構,構建程序設計基礎的新型教學結構,可以從根本上提高教學質量,真正培養和提高學生的計算機應用能力、實際操作能力,更有助于他們的創造性思維和創造性能力的發揮。
3.2.1構建程序設計基礎的新型教學模式
運用建構主義理論構建程序設計基礎的新型教學模式就是要強調以學生為中心,將學生視為教學主體,設計和安排教學首先考慮學生的認知規律和學習特點,并在具體的教學過程甚至每一個環節,都顧及到學生的實際情況,最大限度地激發學生的學習興趣,幫助學生形成學習動機;通過創設符合教學內容要求的情境和提示新舊知識之間聯系的線索,幫助學生建構當前所學知識的意義;為了使意義建構更有效,教師應在可能的條件下組織協作學習(開展討論與交流),并對協作學習過程進行引導,使之朝有利于意義建構的方向發展,最終引導學生實現主動學習,創造性地學習。有了這樣先進的教學理念,程序設計基礎的教學內容安排就更趨于合理:以強調動手實踐、上機編程為切入點;以任務驅動方式,通過實例講授程序設計的基本概念和基本方法;并將授課重點放在程序設計的思路解析上,即在C/C++語言的環境下,針對問題進行分析,構建數學模型,理出算法并編程實現,努力提高學生分析、解決問題的能力,從中激發他們的創新意識,鍛煉他們的創新精神,培養他們的創新能力。為此,在日常的教學過程中,我們采取了如下的細化方案。
(1)采用雙語教學
程序設計基礎的課堂教學采用雙語(英語和漢語)授課。程序設計所選用的計算機語言(如C/C++)與自然語言(英語)很相似,采用雙語教學便于學生對計算機語言的理解和掌握,有利于進一步學習程序設計。教師通過適時、必要的雙語講解和提示,啟發和引導學生充分利用大學英語的語言背景,站在語言學習的基點來完成計算機語言及程序設計理論意義的建構,為順利實現與計算機的真正交流打下堅實的理論基礎。在此期間,學生作為主體直接參與教學,“外化”已學過的英語知識,并不斷產生正遷移,自己發現規律、自己去糾正和補充片面的認識,進而完善程序設計知識的建構;因此,學生的學習興趣和學習熱情、主動性和建構性不斷被激發,發散、逆向等創造型思維得以孕育和培養。學生完全是在一種“探索與發現”式的學習過程中,去積極主動地建構自己的計算機語言和程序設計知識。
(2)強化學生動手實踐
強化學生動手實踐貫穿程序設計基礎的整個教學。教師明確告訴學生:程序設計是高強度的的腦力勞動,不是聽會的,也不是看會的,而是自己練會的。在整個教學中,始終讓學生直接參與思考、直接動手操作,鼓勵和支持他們在親自參與的實際操作中發現問題、解決問題,并積極啟發和引導學生把當前學習內容所反映的事物盡量和自己已經知道的事物相聯系,并對這種聯系加以認真思考,最終用探索、發現的方法建構程序設計知識的意義。例如,每節課2/3的時間,學生都在教師的鼓勵和支持下,積極動腦去參與具體的實際操作,教師既不是簡單地指出學生的錯誤操作,也不是簡單地解答學生的提問和要求,而是啟發和激勵他們進行個性化的學習,讓學生自己積極主動進行所學知識意義的建構,最大限度地提高每一位學生的學習效率。除此之外,教師可將一些有較好編程基礎的學生組織起來,因材施教,引導他們進行探索式的研究性學習,讓他們繼續提高,同時還讓他們擔任“輔導員”,指導和幫助其他同學解決所遇的問題,通過“自我協商”與“相互協商”,提高建構意義的效率和質量,開拓學生的創新性思維。這期間,教師始終是教學過程的組織者、指導者、知識建構的幫助者、促進者;學生則是積極、主動、快樂的學習者。
(3)培養理性思維,進行理性實踐
有的學者認為:
程序設計=計算機編程語言+數據結構+算法
程序設計就是把用戶解決問題的方法思路(數據結構和算法)用計算機能夠讀懂的語法格式表達出來,并通過運行來完成用戶問題的解答。計算機是由人發明的,是“人類通用的智力工具”,它的“思維模式”完全是人類思維模式的反映。因此,在程序設計基礎的教學中,教師有意識地將人的思維與程序設計的編程算法一一對照,引導學生不斷尋找兩者間的聯系,理性思維,從而積極主動地建構起程序設計編程算法的理論和規律,并指導自己進行理性實踐。
例如,在課堂教學中,針對一些理論知識,如計算機語言的語法結構及程序設計的算法等,教師可以利用5~10分鐘的時間,通過精煉、簡短的CAI雙語課件演示和講解,然后分別對比自然語言和人的思維,由感性認識上升到理性認識,啟發他們通過理性思維遞推和建構起計算機語言的語法結構;面對一些程序設計的經典實例,同樣對照人的自然思維,結合一些數學知識,引導他們理性地總結和建構出程序設計編程算法的理論和規律,進而在具體的編程實戰中舉一反三,進行理性實踐。教師平時比較注意對學生學習方式的正確引導,讓他們明白:理論很重要,動手實踐更重要。要在理論指導下,動手動腦、有條有理地進行實踐。
因此,學生經過這樣的理性思維和理性實踐,掌握了程序設計的技巧和方法,成功地解決了具體問題,獲得了成就感,進而對程序設計產生興趣,真正克服了學習程序設計的畏難情緒,學習起來也會更加從容。
(4)培養良好的編程習慣
程序除了寫給自己看,還要交流,良好的編程風格可以提高程序的可讀性、規范性、通用性。在日常教學中,教師應該注意對學生這方面習慣的培養。比如,教師可通過規范、嚴謹的教學課件展示聲明變量加注釋,程序構思有說明,通過分析和調試典型的編程實例,讓學生學會有效地編寫程序、調試程序、優化程序,并對程序的運行結果作出正確與否的判斷和分析,從而達到對學生良好編程素質的培養,也有助于學生嚴謹治學精神的塑造,這是建構主義理論對教師在教學中進行學習情景設計的要求。
(5)培養和提高學習能力,創新能力
程序設計基礎是培養大學生學習能力、創新能力的大課堂。程序設計是一門實踐性極強的計算機學科,所學內容與要求實踐的操作完全一致。因此,適當安排學生自學,有助于提高學生的自學能力。網絡平臺的搭建為學生提供了一個較好的學習環境,為此,教師在教學期間可以不時地設計一些能夠調動學生學習積極性的有關程序設計的最新問題,鼓勵他們通過網絡渠道學習和提高自己的程序設計能力,而且通過上網可以提高他們獲取信息、處理信息和交流信息的能力,有助于培養他們的批判性思維和創制性思維[4]。
總之,經過近幾年程序設計基礎的教學實踐證明:這種新型的教學結構產生了較好的教學效果,學生不僅掌握了程序設計的編程方法和技巧,還養成了良好的編程習慣,同時又培養了學生的創新思維能力和較強的動手實踐能力,得到了廣大學生的贊同。
3.2.2 構建程序設計基礎的新型教學評價模式
運用建構主義理論構建程序設計基礎課程的新型教學評價模式,主張評價不能僅依據客觀的教學目標,還應該包括學習任務的整體性評價,學習參與度的評價等,即通過讓學生去實際完成一個真實的任務來檢驗學生學習結果的優劣。而建構主義主張學習是自我建構知識意義的過程,因此,源于建構觀的評價并不強調使用強化和行為控制工具,而較多使用自我分析和元認知工具。因此,程序設計基礎的新型評價模式既便于學生及時了解自己學習的進展情況、存在的問題等,以便能夠及時彌補知識漏洞,學生自主學習的積極性、創造性被調動和激發,同時又能夠幫助教師及時調整和改進教學工作,最終促進教學質量的提高。
(1)學生學習效果的評價
考試是檢驗學生學習效果、評價學生學習業績的重要環節。開課之初,我們就提醒同學:課程的考核方式是以上機考試取試,考試結果也由計算機評判,對就是對,錯就是錯,不紙上談兵,不考死記硬背的東西。這樣對學生的日常學習有一個正確的引導。然而,考試只是手段,不是最終目的,我們采用設計合理的階段測試系統,對學生各階段的學習情況進行跟蹤測試,測試結果隨機給出,學生可以根據結果隨時調整和糾正這一階段的學習方式和方法,及時查漏補缺,進而積極主動、創造性地完成學習。
(2)教師教學效果的評價
設計開發科學的程序設計考試系統,不僅可以實現考試功能,同時還可對考試結果進行評析,針對各位教師所教班級的考試結果給出相應的評估報告,實現學校對教師教學情況的監控,進而對教師的教學予以指導,以提高程序設計的教學質量,而教師本人也可根據評估報告及時調整自己的教學計劃和教學設計,進而摸索出符合教學規律、更能培養學生創造性思維和能力的教學方法,最大限度地提高教學效果。
4 結束語
不論是從國際還是從國內的教學情況看,當前各級各類學校深化教學改革的關鍵都在于能否打破長期以來統治他們課堂的傳統教學模式。為了改變這種狀況,國內外許多教育工作者、教育學家、教育技術專家多年來從理論與實踐兩個方面作了大量的研究與探索,建構主義理論正是這種努力所取得的主要理論研究成果。廣大教師在具體的教學實踐中如何理論聯系實際,將之轉化成有效的教學方法和手段,還需要不懈地探索和開拓,最終才能使建構主義理論成為我們深化教學改革的指導思想和批判傳統教育思想與教學觀念的銳利武器。
參考文獻:
[1]何克抗,李文光.教育技術學[M].北京:北京師范大學出版社,2005.
[2]馮忠良,伍新春,姚梅林,等.教育心理學[M]. 北京:人民教育出版社,2002.
當前,計算機技術飛速發展,程序設計技術已從結構化程序設計技術向面向對象程序設計技術過渡,對一個規模較大的應用程序,總體框架是由面向對象程序設計構搭而成,而在局部實現時仍需采用結構化程序設計技術。C語言是一種很好的結構化程序設計語言,因此,筆者論述了C中的的結構化程序設計的方法。
結構化程序設計(STRUCTURED PROGRAMING,簡稱SP)的概念是由荷蘭學者E·W.DUKSTRA等人在20世紀60年代后期提出的,是以模塊化設計為中心,將原來較為復雜的問題化簡為一系列簡單模塊的設計,也就是將—個大的計算任務劃分為一個個比較小的任務,這些小任務均由函數來完成。而函數既可以是C的標準庫函數。也可以是自定義函數。在C中,一個具備一定規模的C程序往往是由多個函數組成,其中必有一個名為main的主函數,由main來調用其他函數,必要的話,其他函數還可以調用另外的函數。同一函數可以被一個或多個函數調用一次或多次。模塊的獨立性還為擴充已有的系統、建立新系統帶來了不少的方便,因為我們可以充分利用現有的模塊作積木式的擴展。
中圖分類號: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.教師展示學生的代碼,再次強調語句撰寫的規范。
(設計意圖:通過對新任務的探討、分析,加深學生對分支結構嵌套語句的理解。同時進一步養成良好的編程習慣。)
中圖分類號:G642文獻標識碼:A
1引言
“C語言程序設計”是計算機系各專業的必修課程,屬專業主干課,是一門學位課程。也是各高校部分非計算機專業開設的程序設計課程之一。本課程開設的目的是使學生掌握面向過程的程序設計的基本概念,逐步形成正確的程序設計思想,理解結構化程序設計方法;掌握程序設計的基本技術,程序設計的基本組織方法即函數(模塊)程序設計;具備調試程序的能力。因為C語言功能強大,程序編寫靈活,具有較強的實踐性,是一門高級語言中的“低級語言”,既可以用來編寫系統軟件,又可以用來開發應用軟件,因此對學生以后參與專業領域的應用軟件的開發和使用會有極大的幫助。C語言是結構化的語言,學好C語言程序設計,能為后續課程(數據結構、編譯原理、操作系統、C++、Java等)及其他程序設計課程的學習打下基礎。同時,C語言程序設計也是計算機類各種考試所要求的重點課程之一。
2循環結構程序設計
結構化程序設計中包含三種基本技術:順序結構、選擇結構和循環結構。循環結構的程序設計是學生學習了結構化程序設計的前兩種基本技術之后的第三種基本技術,是結構化程序設計技術中最重要也是最難的部分。這門課程一般都是學生學習程序設計的入門課程,第一次學習循環,可能難于理解“循環”的含義,在設計程序時正確使用循環也就更困難了。針對這些特點,循環結構程序設計的教學方法和教學手段也就值得探討。
3循環結構程序設計的教學方法
3.1教學重點和難點
要想學生能夠輕松理解和掌握循環結構的程序設計,首先得確定本部分內容的重點和難點。
本部分的重點主要是:(1)循環控制結構及其設計。(2)循環控制語句的應用。教學重點是循環控制語句中的while語句,只要把while語句的使用講解清楚了,后面的for語句和do-while語句就容易多了。
本部分的難點是循環控制結構及其設計。
3.2突出教學重點與分散難點的方法
為了突出教學中的重點并分散難點,可以從三方面入手:
(1) 從分析問題的重復性入手。學生在日常的生活、學習中能看到、體會到重復這種行為。精心設計實例,給學生一個比較實際的切入點,通過教師的引導,使學生能體查、歸納“重復行為”,從而理解和掌握循環的主要特點:有規律地重復操作。在教師的啟發、引導下,使學生在課堂上真正地成為“主體”,教師扮演“主導”角色。在整個過程中,緊緊抓住循環程序設計的思想,采用“自頂向下,逐步求精”的結構化程序設計方法,把重點突出出來,并把難點進行分散,使學生容易理解和接受。
(2) 難點內容,提前做好鋪墊。在前面內容適當的地方安排出現循環程序,但不講它的功能,為講解現在的內容做好鋪墊,打下伏筆。這使得學生的每一步學習都有基礎,是一個循序漸進的過程,使學生的學習是在“走臺階”,而不是“三級跳”,效果很好。
(3) 在循環程序設計的應用中,可以從簡單公式化的循環入手到復雜非公式化的循環的處理。講解過程中,通過黑板進行詳細分析和講解,使學生加深學習和理解。適當的地方進行提問,教師引導學生積極參與到分析問題,解決問題的過程中,寫出程序后,放到實際的環境下運行,讓學生來分析程序的正確性,改正程序的錯誤,有利于學生理解難點、掌握重點。
3.3教學過程的設計與組織
(1) 提出問題
本部分的內容是循環程序設計,體現在兩個方面,一是循環結構程序設計的算法表示;二是循環結構程序的C語言表示。循環程序設計是結構化程序設計中最難、最復雜的部分,而授課對象是初次接觸程序設計和循環結構,因此循環的引入就至關重要。例如:通過引入求5!這個簡單的例子,運用已經學過的順序結構程序設計就可以實現;但是求復雜的階乘,比如20!,任意自然數n!,用已經學過的順序結構程序設計和選擇結構程序設計就難于解決,要用簡單的方法解決這樣的問題,就必須使用結構化程序設計中的第三種基本技術:循環結構的程序設計。這樣就輕松地引入了循環結構程序設計。在引入的過程中,要注重調動學生的積極性,采用互動教學法帶動學生的積極性。
(2) 解決問題的方法及講授新內容
在用問題引入了循環后,第一步,分析用循環控制結構求20!的算法的自然語言和流程圖表示。第二步,為了實現這種循環控制行為,C語言提供了多種循環控制語句,while語句就是其中的一種,介紹while語句的一般形式和功能。第三步,講解while循環語句的應用。在講解的過程中,為了提高學生的學習效果,達到預期的目標,除了采用常用的教學方法和手段外,還可以采用以下一些教學方法和手段:
① 注重啟發、引導學生。教師在講解分析時,注重啟發、引導學生主動分析問題、解決問題。
② 注重采用任務驅動的教學模式。通過提出問題,分析問題,引入新知識,解決問題,總結提高,一步步實現教學的目標。
③ 采用國際上慣用的解析教學法。
④ 把編寫的程序放到實際環境下運行。讓學生來分析程序的正確性,改正程序的錯誤,有利于學生掌握好重點、難點知識。
⑤ 應用現代化多媒體教學手段,有利于提高教學效率,便于學生理解。充分利用黑板和投影相結合的方式;分析過程用黑板進行教學,以便體現思維過程。
4結束語
要使學生輕松容易地理解和掌握C語言中的循環結構程序設計方法和技巧,必須在教學的所有環節上都進行認真研究和精心設計。通過對循環結構程序設計的教學,使學生提高綜合應用的能力,為今后的后續課程及軟件的設計和開發打下堅實的基礎。
參考文獻:
[1] 徐慶生.C語言程序設計[M].北京:科學普及出版社,2007.
[2] 高牧,楊志強,許蘭蘭,等. C/C++教學改革的探索與實踐[J]. 計算機時代,2005(11).
The Design and Discussion of Programming Course of Iteration Structure Pedagogical
in C Programming Language
SUN Ying, XU Shun-qiong, LI Xing-mei
【中圖分類號】G71 【文獻標識碼】A 【文章編號】2095-3089(2013)09-0249-02
在數控類專業的高等職業技能“雙證”培訓中,非圓曲線的數控編程與加工是一個教學重點,也是一個難點,因為它不僅是《數控編程》課程教學標準中要求掌握的內容,也是數控中級操作員職業資格證考試大綱中要求掌握的技能及各級各類數控大賽中必考的一個部分,涉及到了數控宏程序的編制,也涉及到了數控系統中變量的分配與使用。非圓曲線數控加工宏程序的編制是以計算機程序設計為基礎的,學生能否正確理解并寫出該加工程序,在很大程度上取決于學生能否準確理解計算機程序中數據存儲的方式、數據處理的方法以及計算機程序設計中控制結構知識,掌握計算機程序編制技能,并在兩個平臺(計算機程序設計與數控編程系統)下將關聯知識進行有效對接并完成技能遷移。本文將對這一環節的教學過程進行設計探討,分析實施結果。
一、教學設計的思路
1.將基礎知識課程與職業技能標準進行有效銜接,突出重點,突破難點
數控加工的宏程序是數控中級操作員職業資格考試中必須掌握的內容,也是學生在數控編程中的難點。程序設計中控制結構的三種形式在非圓曲線數控加工宏程序中都有所體現,如果單純考慮程序設計而沒有具體應用,程序設計就失去了原有的意義。如何將知識點在不同的平臺上進行對接,將知識進行有效遷移,轉換成相應的技能在實際生產中加以應用,是突破難點的關鍵。本次課程的設計就是通過有效突破難點達到突出重點的目的。
2.從易到難的算法案例設計、從熟悉到陌生應用平臺、從理論深入到實踐淺出的引導式教學
本次課程的教學目標是通過循環控制結構在非圓曲線數控加工宏程序中的應用達到培養學生在不同的平臺上進行知識對接與技能轉化的能力。在教學中,采用任務驅動(如圖1)的模式及項目式教學法來設計教學案例(如圖2)。
三個案例的選擇圍繞教學目的,采用循序漸進的引導式教學;案例1是計算機程序設計中循環結構設計的典型問題,學生很容易在熟悉的計算機程序設計平臺(如C)下完成,該案例為案例2的問題解決建立了一個數學模型,因此,案例1不僅僅是一個計算機程序的算法問題,而是案例2中實現各擬合點步進距關系確定的基礎;案例2的任務是找到曲線擬合節點,從而完成曲線擬合,而擬合節點就是案例3中數控加工的關鍵點,因此,案例2的算法就是非圓曲線數控宏程序加工軌跡上各點的算法,在將該算法移置到數控系統的編程平臺(如華中數控系統或FANUC數控系統)中實現就可完成案例3要求的數控宏程序的編制,故此為案例2設計了“計算機編程環境下編程調試運行程序驗證擬合點”的教學過程,為案例3設計了“擬合非圓曲線的計算機程序轉換成數控平臺下加工的宏程序按數控機床的加工要求設定毛壞與機床狀態運行加工宏程序進行仿真加工檢驗算法及程序”的教學過程,這樣的過渡讓學生在知識遷移時沒有突兀的感覺,符合認知的習慣和思維方式,自然而然地加深了對程序設計中循環結構理論知識的理解,掌握了將其應用于加工非圓曲線數控宏程序時的方法,在實踐中獲得了技能的提高。
二、教學實施的方法
1.形象直觀的多媒體課件與板書的有效結合
本次課程信息量較大,重點、難點明顯。在教學中,把三個案例的構建、曲線擬合的方法、曲線坐標系與編程坐標系的轉換等內容中涉及到的圖形圖像以多媒體課件的形式進行表達,便捷直觀,提高了課堂時間的利用率;將學生難以理解的非圓曲線擬合理論、過程及擬合曲線的計算機程序轉化為數控加工宏程序的過程,以板書的形式完成,一方面從視覺得上強化對學生的刺激,加深印象,另一方面讓學生對這一重點和難點知識有充分的時間進行思考,實現教師與學生的課堂互動,使學生的思維與老師的啟發保持協調一致。根據需要,在教學過程中多媒體課件的演示與板書教學穿插實施。
2.三個軟件平臺的有效利用
本次課程涉及到三個軟件平臺的應用――計算機程序設計、斯沃數控仿真系統和傳奇多媒體教學網絡,其中前兩個是與職業技能訓練有關的軟件。在計算機程序設計的環境下,實現了用循環結構進行橢圓曲線擬合的算法實施并驗證,這是將曲線擬合的理論和循環控制結構的理論進行的第一次有效結合并加以實踐的過程,但這一過程并沒有具體的生產應用,因此它仍然停留在理論的層面上;在斯沃數控仿真系統的平臺中,實現了把相應程序用數控系統要求的變量及程序格式轉化而成的數控加工程序進行零件的模擬加工,并有了一個可見的虛擬加工成果,雖然不是真實的加工生產,但這兩個軟件的有效利用已經將循環結構在非圓曲線輪廓數控加工宏程序中的應用推上了一個真實的應用環境,學生從這兩個軟件的教學過程中非常直觀地感受到了課程內容與職業標準之間的關系。
3.“教、學、做”一體化的有效教學過程
本課程是一門理論與實踐結合較為緊密的課程,理論與實踐并重,教學中不僅要解決“怎么做”的問題,還要解決“為什么這么做”的問題才能達到讓學生知識遷移與技能轉化的目的。因此在教學中采用了“教中做”、“做中教”、學生“做中學”、“學中做”、“做中會”的教學過程,將程序邊講解邊輸入到相應的軟件中,現場進行程序的調試及運行,學生邊看邊學,有問題教師可以及時在傳奇多媒體教學網絡的監控中發現并解決。學生在自己動手的過程中增加了學習的興趣,提高了技能。
三、教學的總結與反思
1.本課程是一門計算機編程理論與實踐相結合的課程,它不僅有利于提高學生的編程能力、思維能力,還培養學生的實際動手能力和創新能力。觸類旁通、舉一反三、實現知識對接與遷移、提升技能是本次課的教學目的,課后的作業應該體現這一點。
2.《計算機程序設計》這門課程的設置影響本次課程的教學效果。如果學生對計算機程序設計基本理論與方法有比較好的基礎的話,用本次課來實現數控宏程序的編制,效果很好;反之,基礎較差的話,仿真軟件上模擬加工過程可以直接以視頻的形式展現,也會激發學生對《數控編程》這門課程的興趣。
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 使用效果及結語
在早期的計算機程序開發中用的比較多的方法即是結構化程序設計,因此也出現了一批優秀的結構化程序設計的語言,如C語言、Pascal等。但是隨著計算機軟硬件的不斷發展,傳統的的程序設計方法出現的弊端:結構化方法開發的軟件,其穩定性、可修改性和可重用性都比較差,這是因為結構化方法的本質是功能分解,從代表目標系統整體功能的單個處理著手,自頂向下不斷把復雜的處理分解為子模塊,這樣一層一層的分解下去,直到僅剩下若干個容易實現的子模塊功能為止,然后用相應的工具來描述各個最低層的處理。因此,結構化方法是圍繞實現處理功能的整個過程來構造系統的,我們又稱其為面向過程程序設計。
由于結構化程序設計存在一定的問題,因此勢必有一個新的程序設計思路來完善,這就是面向對象程序設計出現和發展的必然。
一、結構化程序設計存在的問題
1.軟件的重用性差
重用性是指同一事物不經修改或稍加修改就可多次重復使用的性質。軟件重用性是軟件工程追求的目標之一。如果軟件的重用性較差那么軟件的造價就相對高。
2.軟件的可維護性差
軟件工程強調軟件的可維護性,強調文檔資料的重要性,規定最終的軟件產品應該由完整、一致的配置成分組成。在軟件開發過程中,始終強調軟件的可讀性、可修改性和可測試性是軟件的重要的質量指標。實踐證明,用傳統方法開發出來的軟件,維護時其費用和成本仍然很高,其原因是可修改性差,維護困難,導致可維護性差。
3.開發出的軟件不能真正滿足用戶需要
結構化方法開發大型軟件系統涉及各種不同領域的知識,在開發需求模糊或需求動態變化的系統時,所開發出的軟件系統往往不能真正滿足用戶的需要。
二、面向對象程序設計的思想
從現實世界中客觀存在的事物(我們稱為對象)出發來構造軟件系統,并在系統構造中盡可能運用人類的自然思維方式,強調直接以現實世界中的事物為中心來思考問題,認識問題,并根據這些事物的本質特點,把它們抽象地表示為系統中的對象,作為系統的基本構成單位。這可以使系統直接地映射問題域,保持問題域中事物及其相互關系的本來面貌。
面向對象方法是以認識論為基礎,用對象來理解和分析問題空間,并設計和開發出由對象構成的軟件系統的方法。簡言之,面向對象就是面向事情本身,面向對象的分析過程就是認識客觀世界的過程。面向對象方法從對象出發,發展出對象,類,消息,繼承等概念。 面向對象方法的主要優點是:符合人們通常的思維方式,從分析到設計再到編碼采用一致的模型表示具有高度連續性,軟件重用性好。
面向對象的程序設計語言必須有描述對象及其相互之間關系的語言成分。這些程序設計語言可以歸納為以下幾類:系統中一切皆為對象;對象是屬性及其操作的封裝體;對象可按其性質劃分為類,對象成為類的實例;實例關系和繼承關系是對象之間的靜態關系;消息傳遞是對象之間動態聯系的唯一形式,也是計算的唯一形式;方法是消息的序列。現在用的比較多的面向對象的程序設計語言有Java,C#等。
三、面向對象程序設計的實現過程
1.選擇面向對象語言
采用面向對象方法開發軟件的基本目的和主要優點是通過重用提高軟件的生產率。因此,應該優先選用能夠最完善、最準確地表達問題域語義的面向對象語言。
在選擇編程語言時,應該考慮的其他因素還有:對用戶學習面向對象分析、設計和編碼技術所能提供的培訓操作;在使用這個面向對象語言期間能提供的技術支持;能提供給開發人員使用的開發工具、開發平臺,對機器性能和內存的需求,集成已有軟件的容易程度。
2.類的實現
在開發過程中,類的實現是核心問題。在用面向對象風格所寫的系統中,所有的數據都被封裝在類的實例中。而整個程序則被封裝在一個更高級的類中。在使用既存部件的面向對象系統中,可以只花費少量時間和工作量來實現軟件。只要增加類的實例,開發少量的新類和實現各個對象之間互相通信的操作,就能建立需要的軟件。
一種方案是先開發一個比較小、比較簡單的來,作為開發比較大、比較復雜的類的基礎。
3.應用系統的實現
應用系統的實現是在所有的類都被實現之后的事。實現一個系統是一個比用過程性方法更簡單、更簡短的過程。有些實例將在其他類的初始化過程中使用。而其余的則必須用某種主過程顯式地加以說明,或者當作系統最高層的類的表示的一部分。
4.面向對象測試
把各個子系統組裝成完整的面向對象軟件系統,在組裝過程中同時進行測試。
從事面向對象編程的人按照分工來說,可以分為“類庫的創建者”和“類庫的使用者”。使用類庫的人并不都是具備了面向對象思想的人,通常知道如何繼承和派生新對象就可以使用類庫了,然而我們的思維并沒有真正的轉過來,使用類庫只是在形式上是面向對象,而實質上只是庫函數的一種擴展。
面向對象是一種思想,是我們考慮事情的方法,通常表現為我們是將問題的解決按照過程方式來解決呢,還是將問題抽象為一個對象來解決它。很多情況下,我們會不知不覺的按照過程方式來解決它,而不是考慮將要解決問題抽象為對象去解決它。
由于面向對象的程序設計還是有待發展和改進的,我們勢必對它有一個期待,結構化程序設計的思路我們也不是全部都要丟棄,因為面向對象里面也有過程的東西,不過面向對象的程序設計思路是程序開發的一個主流的方面,也是對結構化程序設計的一個發展的新思路。
中圖分類號:TP311.1 文獻標志碼:A 文章編號:1006-8228(2016)10-54-03
Design of program structure analyzer based on Clang compiler
Zhou Rui
(Shaanxi institute of technology, Xi'an, Shaanxi 710300, China)
Abstract: At present, the research of software testing in China is still in the basic stage of theoretical methods and management methods, and it has not made any breakthrough in the software testing technology. Based on the front end of current popular Clang compiler, using different rules to identify the structure of statement in the abstract syntax tree generation process, and to carry out the reform and correction of the intermediate structure, an effective program structure analyzer with high accuracy is obtained. The design of program structure analyzer lays a solid underlying data support for realizing a theory based comprehensive white box testing tool.
Key words: Clang compiler; abstract syntax tree; program structure analysis; software testing
0 引言
程序結構分析器的實現離不開一個高效的編譯前端作支持,而編譯技術到目前為止在各領域得到了廣泛的應用。從銀行的管理軟件到高性能計算,大多數都是高級語言進行編寫完成,然后通過靜態或動態編譯最終在計算機上運用。目前比較流行的編譯器是在Apple上使用的LLVM/Clang編譯器、由GNU開發的程序語言編譯器GCC用于Linux系統下編程、IBM公司研制開發的Java編譯器Jikes、Inter公司開發的Open Research Compile,還有常見的MSVC、Borland c、myeclipse和jbuilder等等[3-4]。
程序中的缺陷檢測是編譯器的一項重要任務,也是目前研究的熱點和探討的核心問題。要識別各種錯誤包括:變量未定義、類型檢驗、語義錯誤以及內存泄漏和違規等,就必須在程序分析方面投入更多精力進行設計研究。在保證可靠性和安全性的同時也要減少分析工具的誤報,從而避免給程序員帶來不必要的麻煩,節約時間,提高效率。因此,編譯器技術中靜態或動態的程序分析對識別程序中的錯誤和缺陷有著重要的作用,不過現在面臨的問題還不少,出現了許多新的挑戰[5]。
1 clang的靜態分析器
現有的Clang靜態分析器已經完成了過程內分析(Intra-ProceduralAnalysis)和路徑診斷(Path Diagnostics)兩個大模塊。其中已實現的過程內分析功能包括源代碼級別的控制流圖、流敏感的數據流解析器、路徑敏感數據流分析引擎、死存儲檢查和接口檢查。而路徑診斷信息模塊已經提供路徑診斷客戶端(提供開發新bug報告的抽象接口、獨立于生成過程的可視報告、HTML診斷報告)、缺陷報告器(為前一個模塊服務)[6]。
1.1 靜態分析概述
靜態分析(static analysis)[1]是指在不執行的情況下對代碼進行評估的過程。靜態分析非常強大,這是因為它允許對多種可能性進行快速參考量。一個靜態分析工具能夠探查大量“如果……將會……”的假定情況,而不必為所有這些假定進行計算,進而執行這些代碼。靜態分析技術非常適合于識別安全問題。
⑴ 靜態分析工具徹底而一致地進行檢查,而不管程序員的檢查角度和代碼的復雜程度。
⑵ 通過對代碼本身的檢查,靜態分析工具往往能指出安全問題的根源,而不僅僅是指出某種癥狀。