時間:2023-07-13 17:23:28
開篇:寫作不僅是一種記錄,更是一種創造,它讓我們能夠捕捉那些稍縱即逝的靈感,將它們永久地定格在紙上。下面是小編精心整理的12篇程序設計的結構,希望這些內容能成為您創作過程中的良師益友,陪伴您不斷探索和進步。
數據結構是計算機存儲、組織數據的方式。數據結構是指相互之間存在一種或多種特定關系的數據元素的集合。通常情況下,精心選擇的數據結構可以帶來更高的運行或者存儲效率。數據結構往往同高效的檢索算法和索引技術有關。本書采用程序設計語言Python作為具體的實現語言,介紹了可以有效處理大量數據的編程方法與技巧,不僅給出許多重要算法的實例,還介紹了計算復雜性的相關內容,以便計算機程序員對所用算法的效率進行判斷。
全書共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博士是路德學院數學與計算機科學系教授。
本書介紹了初級與高級的數據結構和算法問題,每一章開始提供了學習目標,復習題和編程練習,以及眾多的例證;同時在相關的網站提供可下載的程序和補充文件。本書可以作為計算機學科相關專業的教材或參考書,同時對計算機科技工作者也有參考價值。
李亞寧,碩士研究生
(中國科學院自動化研究所)
采用多維分析法和時空分析法。多維分析法認為,事物有若干性質,并由這些性質構成,分析事物的變化和發展,就是分析事物的性質。作為一種方法,其將對事物的分析等價為對事物多質的分析,沒有交叉互質的一個性質就是一個維,對事物多質的分析方法就是多維分析。任何事物都擁有自身的時空,事物性質的變化都必然是在事物的時空內變化和發展,對事物性質分析最本質的方法就是在時空維上的分析。以計算機設計課程群為例,從時間維來看,問題分階段逐步展開、逐步解決。分階段即分程序設計課程、面向對象程序設計課程、數據結構課程;逐步則是指從簡單到復雜,從語言到程序閱讀,再到程序設計的過程。在時間維上,程序設計問題的解有一個重要的觀察點,即程序閱讀。從空間維來看,程序設計=數據+算法+語言。其中,數據+算法為程序設計的核心[1]。空間維是兩維的,即數據維與算法維。程序設計課程解決離散數據與結構化算法的設計問題,面向對象程序設計課程解決對象數據與對象互動算法,數據結構課程解決數據結構與算法。算法是數據的操作過程。計算機設計課程群中的課程數據形態具有差異,算法是對其一定形態數據的加工。從空間來看,程序設計問題的解有兩個重要觀察點:數據和算法。
2時間維分析
程序設計問題在課程群的時間維上,一般都能體現從簡單到復雜。在數據上從簡單的無結構數據到有結構的數據,從簡單的無操作數據到有操作的對象數據。在程序設計上,從不可分解問題的簡單設計到可分解問題的復雜設計,從語言學習到程序設計學習。程序設計問題解在課程群各自獨立的課程的時間維上,沒有得到足夠和充分的展現,嚴重影響了學生對問題的認識,以至于學生無法掌握程序設計能力。如同要有充分的文學閱讀,才能為文學創作奠定基礎,由于程序設計的復雜性,從語言學習再到程序設計學習,才會使程序設計學習簡單化,程序設計問題解的學習也是能力的學習,而非理論知識系統的學習,需要有能解決實際問題的經驗。經驗分為直接經驗和間接經驗,程序設計的間接經驗是他人設計的程序。閱讀程序就是學習程序設計的間接經驗。閱讀程序作為程度設計的重要過渡橋梁,使學生在符合認識與學習規律的條件下,充分掌握程序設計能力。程序設計的學習過程劃分為:語言、程序閱讀、程序設計。在解程序設計的過程中,將程序閱讀作為新的觀察點和分析平臺。程序閱讀就是對已知程序或程序段的閱讀,程序閱讀又分為3個步驟:理解程序結構、模擬計算機執行程序、上機驗證。程序閱讀有3種層次:第一種是能讀懂程序中所有語句和數據,這是基礎層次,是其它層次掌握的條件和前提,屬于計算機語言;第二種是能讀懂程序設計中的技巧和方法;第三種是能讀懂程序設計中的設計思想[2]。
3空間維分析
3.1課程群的解空間與各課程的子空間
計算機設計課程群的解空間可即程序設計解空間分解為:結構化的程序設計課子空間、面向對象程序設計課子空間、數據結構課子空間,如圖1所示。計算機設計類課程群的解空間與它的三個子空間是整體與部分的關系。因此,一方面課程群的解空間由3門課程的解空間構成。另一方面課程群的解空間具有抽象性和普遍性,3門課程的解空間呈現泛化。課程群的解空間具有程序設計最本質的意義,對課程群中各門課程有著本質的指導意義。課程群的解空間有數據維和算法維,程序設計課的解空間是由離散數據維和結構化算法維構成;面向對象程序設計課的解空間由對象數據維和對象互動的算法維構成;數據結構課的解空間由結構數據維和結構數據的算法維構成。程序實質就是對已知數據進行加工得到結果數據,是數據與加工過程的相互作用。相比較程序設計解的二維而言,數據維是處于主要和核心位置,程序設計就是圍繞數據的加工處理。程序設計課與面向對象程序設計課的加工處理方式有所區別,程序設計采用結構化的處理方法,如順序結構、選擇結構、循環結構;面向對象程序設計采用對象方法,如繼承、事件、多態等。對數據的分析至關重要,離散數據是與運算是分離的,主要分析數據的形態,即常量、變量、表達式。其中變量是重點,體現了數據與存儲空間的聯系;面向對象程序設計的數據是對象的一部分,即數據成員;數據結構程序設計的數據有結構,且重點在結構上。
3.2各課程的數據分析
在結構化的程序設計中,數據變量對應一個存儲單元,有三層含義:一是表達物理存儲單元;二是表達存儲單元的存儲內容;三是存儲內容的讀寫性質。必須全面完整理解和掌握此3個含義。例:intx數據變量定義,分配一個存儲單元;x=0;x<=10,數據變量體現存儲單元的存儲內容:x++;cout<<x,數據變量讀寫反映了數據變量內容的變化。關于面向對象程序設計(C#語言)的程序重點關注和描述對象數據成員的構成、內容變化和訪問限制。只有關注和分析有關聯的對象數據成員的關聯情況、對象數據成員與存儲空間的關系,以及與對象數據成員的一切有聯系的內容,才能實現對數據的全面掌握。在此基礎上,了解和掌握以數據為加工處理的算法過程,才合乎程序設計能力培養的邏輯[4]。數據結構(C語言)程序的重點是數據的邏輯結構及定義性描述。例如:順序表就是利用連續存儲空間的線性關系來實現連續存儲空間中數據元素的線性關系,只有先從數據的邏輯結構上理解,才能理解存儲實現,分析數據的物理結構以及兩者之間的關系,如圖3所示。數據定義是對實現數據邏輯結構的計算機語言代碼的描述,在算法設計之前須要有充分的分析、表現、描述,以使算法設計有依據和目標。在程序設計中,首先要分析數據,充分、全面、清晰地分析數據后,再作算法分析和設計。在數據與算法的二維空間中,基于數據加工處理的算法才會自然合乎邏輯地體現出其過程。
4結語
關鍵詞: VB程序設計 教學改革 問題分析
Visual Basic(VB)語言是包含協助開發環境的事件驅動為機制的可視化程序設計語言,雖然屬于比較簡單的高級程序設計語言,但是中職學生在學習前多數沒有接觸過此類程序設計語言,學習這種邏輯性強、枯燥、抽象的知識可能會存在一定問題,因此老師要通過不斷改進課堂教學方法提高教學的有效性。
一、VB程序設計教學存在的問題
具體而言,現階段很多中職學校VB程序設計教學還存在以下兩個方面的問題:一方面,學生學習意識不強。很多中職學校的課堂教學還采用傳統模式,即老師講、學生聽,學生在學習中處于被動地位,無法充分調動其學習積極性與主動性,從而無法保證教學效果。VB程序設計課程主要包括兩大內容,即編程的環境與編程界面、編程思想,其中編程環境與編程界面的學習只需熟練掌握窗體及各種控件的具體功能及屬性即可,而學生要形成編程思想不僅要具備較強的邏輯思維能力及扎實的數學基礎,還有一個相對較長的過程,因此編程思想的形成與建立比較困難。形成編程思想除了要系統理解VB程序設計的知識體系外,還要多上機實踐。但是中職學校通常機房資源比較匱乏,專業教師資源緊張,再加之學生對課程的重視度不夠,一些學生存在惰性,故無法保證學習效果。另一方面,教學資源匱乏。VB程序設計需要大量的上機實踐,但是中職學校機房資源緊張,無法保證講課效果。而且上機時學生人數過多,老師無法了解到每個學生的操作情況,只能在學生有問題時再進行針對性輔導,故對學生的了解不足。
二、VB程序設計的教學改革策略
針對中職VB程序設計存在的問題,建議從以下幾個方面進行教學改革:
(一)算法的講解
VB程序設計的重點內容包括算法、控制結構兩個方面,課堂教學中要針對這兩個方面加強講解。程序就是算法與數據結構之和,但是VB程序設計具有面向對象的特點,故可以將程序作為算法、數據結構及界面設計之和。算法是程序設計的核心,只有算法正確,再配合自然語言、流程圖等形式,將其轉換為VB程序代碼,才能利用計算機解決具體問題。算法的講解可以結合學生的生活實例,拉近課程與學生生活的距離。比如從哈爾濱到北京,這個問題需要考慮三個因素:一是出發地到目的地是直達或中轉,二是選擇具體的交通工具,三是當時的天氣情況等,三個因素存在一定的制約關系,學生通過全面考慮會選擇乘坐火車到達目的地。這種方法可以引出算法的概念、特征及算法的描述工具,雖然例子簡單,但是包含軟件工程的思想,將算法的優越性充分體現出來。
(二)控制結構的講解
控制結構知識的學習可以培養學生的計算思維能力,因此講解控制結構知識時不能只將重點放在語法結構的相關知識,還要讓學生了解到解決問題的方法及編程思路。多為學生設計開放性問題,即某個問題有多種不同的解決方法,學生在思考、尋找解決問題的過程中提高分析能力及解決問題的能力??刂平Y構分為三種,即順序結構、選擇結構及循環結構,其中順序結構是執行程序過程中按照代碼自上而下的順序執行,主要采用輸入輸出函數及語句進行講解。講解選擇結構知識時,可以以某個學生的成績為例,利用選擇結構if語句對學生的成績及格與否進行判斷,引入選擇結構的雙分支結構,再將學生的成績分為優秀、良好、中等、及格、不及格等幾個等級,再引入多分支結構、select case結構等。講解循環結構時要先讓學生理解循環結構在解決實際問題中的作用,再設計案例講解。
(三)創建項目實例庫
網絡技術的發展為VB程序設計提供了豐富的課程資源,老師可以在學校機房資源緊張的情況下,從網上搜集更多典型的、有實際意義的案例,建立一個項目實例庫。中職學生多數是初次接觸計算機程序設計,其分析問題的方法多是基于數學思維分析的,在實踐過程中遇到新問題往往思路不清晰,此時老師可以從項目實例庫中選擇對應的實例,稍做修改后作為學習模板讓學生借鑒,以拓寬學生的視野,提高學生的編程能力。項目實例庫包括基礎類、算法類、圖形類、文本類、應用類五大類,學生可以自主選擇、自主學習,并強制要求學生從中選擇幾個典型的、包含VB程序設計知識要點的實例,幫助學生對VB知識結構有更全面的了解。在學習過程中選擇學生最感興趣的實例,鼓勵其分析游戲的程序代碼,并嘗試改寫程序代碼,以獲得相似的游戲動畫效果,激發學生的學習興趣,提高其解決問題的能力。
三、結語
在中職VB程序設計教學中要對傳統教學模式進行改革,才能激發學生的學習興趣,提高其知識、技能及綜合素質,從而提高教學質量。當然VB程序設計教學需要在長期的教學實踐中不斷提高、不斷完善,老師要將更多精力放在教學的創新,不斷開拓校企合作等新思路,深化教學改革,增強教學效果。
參考文獻:
[1]衣治安,倪紅梅,吳雅娟.VB程序設計課程立體化教學模式的研究與實踐[J].中國電力教育,2015(10):70-71.
關鍵詞:C語言;程序設計;循環
1. 前言
順序結構、選擇結構、循環結構是結構化程序設計的三種基本結構,一個程序的任何邏輯問題均可用這三種基本結構來描述。所以在高級語言程序設計課程中,掌握這三種結構是學好程序設計的基礎。而循環結構是這三者中最復雜的一種結構,幾乎所有的程序都離不開循環結構。在C語言中,循環結構主要包括for、while和do-while三種語句,其中for語句的應用更為普遍一些。循環語句的用法對于有程序設計經驗的學生來說輕而易舉,但是對于那些沒有經驗的初學者來說,難度卻不小。本文從初學者的角度,闡述了C語言中如何建立循環的思想。
2. 如何設計引例
英文原版教材,循環是這樣描述的:repeatation,重復?!掇o?!飞险f循環是指事物周而復始的運動或變化。由這兩個定義可以看出,循環重在強調重復。
2.1 運用實例解釋循環思想
在一堂課的設計過程中,引例的作用至關重要。一個好的引例能把抽象問題簡單化、具體化,有利于學生理解掌握。在學習循環結構時可先利用現實生活中的一些具體實例來說明什么是循環以及為什么要研究循環。例如:春夏秋冬四季的更替,汽車內燃機的作功過程:進氣——壓縮——燃燒——排氣,叉車裝貨、運貨、卸貨的過程。3個例子的共性在于,它們都是周而復始的、重復的運動,為了研究問題本質,只要找出規律,將重復頻率高的相同部分作為重點進行突破,可以為我們的研究節省時間,提高工作效率。
比如,我們要提高發動機效率,并不需要要研究千次、萬次的燃燒過程,只要從研究一次進氣、壓縮、燃燒、排氣一個周期入手;
再如運輸問題,我們可以通過一次往返運輸過程的研究,明確該從哪些環節下手實現安全、快捷、節能等問題。
2.2 編程中的循環問題
現在我們可以提出一個問題:在計算機程序設計的世界里是否也有類似的這種相同操作重復出現的問題呢?我們又當如何提高程序設計的工作效率呢?
利用最簡單累加求和的例子。
例:求1+2+3+4+5+…+10的和。
利用所學知識學生很快能寫出這個問題的程序:
#include<stdio.h>
main()
{int s;
s=1+2+3+4+5+6+7+8+9+10;
printf(〝%d〞,s);}
接下來把題目改成:求1+2+3+4+5+…+100的和。
同樣學生可以利用上面的方法實現:
#include<stdio.h>
main()
{int s;
s=1+2+3+4+5+6+7+8+9+10;
printf(〝%d〞,s);}
在編寫的過程中學生會發現此種方法雖然可行,可是寫起來麻煩費時。我們如何對其進行改進呢?
首先,復雜操作簡單化——將一個復雜操作化為多個簡單操作;
#include<stdio.h>
main()
{int s=0;
s=s+1;
s=s+2;
s=s+3;
s=s+4;
………
………
………
s=s+100;
printf(〝%d〞,s);}
經過改進之后會發現,雖然每一行變簡單了,但是行數卻增加了,在工作量上并沒有減少。經過觀察可以發現,被框起來的部分雖然不同但已經十分相似。下面引導學生如何利用常量與變量的關系把不同的行變成相同的,也就是第二步變化。
接下來,簡單操作相同化——多個簡單操作整理成相同操作;#include<stdio.h>
main()
{int s=0,i=0;
i=i+1; s=s+i;
i=i+1; s= s+i;
i=i+1; s= s+i;
i=i+1; s= s+i;
………
………
………
i=i+1; s= s+i;
printf(〝%d〞,s);}
經過第二步之后會發現原本不同的語句變成了相同的語句,我們在整個過程中都做著重復的、相同的事情,也就是前面所說的循環。下面就可以引出本節課的重點循環結構。
最后,相同操作重復化——設計控制相同操作執行多次。
#include<stdio.h>
main()
{int s=0,i=0;
i=i+1; s=s+i;
i=i+1; s= s+i;
i=i+1; s= s+i;
i=i+1; s= s+i;
………
………
………
i=i+1; s= s+i;
printf(〝%d〞,s);}
通過實例總結,循環結構程序設計的思想:
①復雜操作簡單化——復雜操作化為多個簡單操作;
②簡單操作相同化——多個簡單操作整理相同操作;
③相同操作重復化——循環控制相同操作重復執行
經過這幾步變化可以將循環的思想簡單明了的呈現在學生眼前,學生只有真正理解掌握了循環的本質,才能在以后的學習過程中很好的去運用。這種方法在日常教學中得到了很好的效果,也得到了學生的認可。
3. 循環本質
循環結構程序設計的任務就是設計一種能讓計算機周而復始地重復地執行某些相同代碼的程序。換句話說就是:相同語句程序員只編寫一次代碼、并讓計算機多次重復執行。將程序員從大量重復編寫相同代碼的工作中解放出來,計算機的工作量并沒有減少。
利用循環的好處是:節省編程的書寫時間,減少程序源代碼的存儲空間,減少代碼的錯誤,提高程序的質量。
這就是程序設計過程中循環的本質。
了解掌握了循環的本質接下來講解循環的三要素、三種循環語句的結構及執行過程就很容易被學生接受了。
4. 結束語
此方法較以前的教學學法有了很好的改進,對于循環問題學生不再有畏懼感,也為以后數組及其他知識的學生打下了基礎。
如何讓一名初學者盡快擺脫日常的思維定式,更加透徹地理解和掌握程序設計中的基本思想,領會程序設計的精髓,總結出程序設計中每一種程序設計結構的本質及適合解決的問題,是高級語言程序設計這門課程在講授過程中,應該時刻注意的問題。
參考文獻:
[1] 譚浩強. C 語言程序設計(第二版)[M]. 北京:清華大學出版社,1999
【關鍵字】案例教學 C語言程序設計 課程改革
【中圖分類號】TP311.1-4;G642.0
程序設計方法大體上分成兩種:一種是結構化程序設計,一種是面向對象程序設計。結構化程序設計思想的原則是:自頂向下,逐步求精,模塊化。絕大多數高校對學生進行結構化程序設計思維培養都是通過“C語言程序設計”課程進行的,但是多數課堂在進行“C語言程序設計”課程時都是按照教材的章節進行講解[1][2],對C語言缺少一個整體的設計,并且實例之間都是離散的,沒有關聯,這樣對于學生形成結構化程序設計思維造成了很大的困難。學生在學習“C語言”之后,往往知道其中的一些概念,如數組、結構體、指針、函數等等,會使用的就會減少一部分,而對“C語言”能夠有一個整體的理解,對結構化程序設計思維有深入了解的,能夠獨立編程[3]的就少之又少。
為了培養學生的“結構化程序設計思維”,讓學生對“C語言”有一個整體的掌握,并且能夠熟練使用“C語言”進行程序設計,我們采用“全程案例式”教學方式進行C語言程序設計課程改革。
所謂“全程案例式”C語言程序設計教學是指在C語言的教學過程中從頭到尾選用一個典型案例,如“學生成績管理系統”,仿照教務管理平臺對學生成績進行管理。這樣的案例學生非常了解,能夠對其中的角色功能有明確的認知,這樣就很容易分析清楚整個系統的功能模塊構成,在此基礎上對各個功能模塊和數據類型進行設計,從而培養學生的結構化程序設計思維。
一、問題分析
教學人員對教務管理平臺都不陌生,在分析問題的時候可以讓學生自己設定學生成績管理系統的角色和功能,然后實現。一般情況下,學生成績管理系統可以分成三種角色,一是管理員,主要負責訪問成績管理平臺成員數據的增、h、改、查等操作,二是教師,主要負責學生成績的錄入、修改、查看等操作,三是學生,可以查看自己的成績信息。同時三種成員都可以修改自己登陸平臺的密碼,功能模塊劃分如圖1所示。通過對系統功能模塊的劃分,可以讓學生理解結構化程序設計“自頂向下,逐步求精,模塊化”的程序設計思想,并在此基礎上,開發對應的功能函數。
二、學生分組
將學生分組,如25名同學分成5組,每組5人,有一位組長。每組分別獨立完成以上教務管理平臺中對應的功能模塊,可以根據本組的討論有所增刪。這樣每位同學平均完成兩個功能模塊,從而保證在課堂教學時間能夠完成該項目。組長負責整個案例的任務分配,同時解決小組成員實施時遇到的技術問題,當然組成的最后成績也會較高。
三、教學內容
仿照工程化的思路,如設計一個產品,需要有工人、原材料、工人。工人使用工具按一定的步驟加工原材料得到一個一個的零件,再將這些零件有機地組裝起來就會形成一個產品。C語言的教學內容也可以按照以上思路進行分解,首先要有人,即程序員也就是學生;原材料是C語言的數據類型,包括基本類型(整型、實型、字符型、枚舉型)、構造類型(數組、結構體、共用體)、指針類型和空類型;工具是運算符,用來操作某種類型的數據;操作步驟包括順序結構、選擇結構和循環結構;程序員使用工具按照一定的步驟加工原材料就能夠得到一個零件,即函數;再將這些函數按圖1進行組裝就能夠形成最后的學生成績管理系統的源文件,同時能夠對存儲在外部文件中的人員數據等信息進行訪問。[4]
將C語言的教學內容按照內在邏輯分成五大部分,學生容易理解并掌握。
四、教學方式
在教學上,采用“全程案例教學”,第一節課就開始寫代碼。開發工具可以使用C-Free、Dev-C++、Visual C++等,讓學生理解C語言、C++語言和開發工具的區別。
根據問題的需要,首先要設計一個“學生成績管理系統”的歡迎界面,通過該界面的設計講解順序結構,尤其是輸出語句的使用。接下來應該是用戶權限選擇,如“1、管理員 2、教師 3、學生”,這就要用到選擇結構,講解if語句和switch語句。此時要在選擇語句中使用一些數據類型,因此可以在此處講解基本數據類型(字符型、整型、實型、枚舉型)。在用戶進行選擇時要進行選擇數據的輸入,此時講解輸入語句。此時的程序只能進行一次用戶的選擇,如果想再次選擇則需要重新執行程序,在此處可以進行循環結構的講解,可以多次選擇用戶,直到用戶自己退出程序為止。在循環結構中要用到相關的表達式,可以在此處進行表達式的講解。當然,也可以先講解基本數據類型和表達式,之后再進行順序結構、選擇結構、循環結構的設計。
在選擇了相應的用戶權限之后,就要執行對應的用戶功能,如管理員功能、教師功能、學生功能等。此時給學生講解程序設計中的模塊,即函數,讓學生深刻理解模塊的概念及實現方式。在進入到相應的函數之后,如學生函數,此時應該確認學生的身份是否合法,通過鍵入如學號和密碼來驗證該學生是否合法,如合法則可以查詢成績,如不合法則重新登陸或退出。而學生的信息適合使用結構體類型數據來存儲,很多學生信息則需要用結構體數組來存儲,在此處給學生講解構造數據類型(結構體、共用體、數組),通過學生結構體數組來模擬數據庫表,在此處給學生講解相關的數據庫知識。學生功能包括成績查詢和修改密碼兩部分,所以要寫兩個相關的子函數,此處深入講解函數的相關知識,如函數的調用、參數傳遞等。這部分是學生成績管理系統的核心功能,工作量較大。
在完成相關數據的存儲之后,發現關機之后數據就沒有了,通過回顧內存與外存的區別,所以要把數據庫存儲在外存儲器上,這就要用到文件。建立若干個文件用來存儲管理員、教師和不同班級學生的記錄(可用二維數組或多維數組來區別系或班級等),通過對文件的讀寫來實現對數據庫數據的存取,基本達到學生成績管理系統的使用目標。
在這個過程中,除了必要的知識介紹外,重在培養學生的結構化程序設計思維,理解C語言的幾大組成部分并熟練使用,同時養成設計代碼的規范性。
五、考核方式
全程采用案例教學就不適合出試卷進行考核,因此在考核方式上更適合過程化考核[5]。我們將考核內容分成兩個部分,平時考核占60%(出勤占20%,平時訓練占80%),最終考核占40%(小組考核占50%,個人考核占50%)。這樣可以弱化對知識點的考查,重在考查學生對程序的分析與設計的能力。
六、實踐教學
在實踐教學環節(課程設計[6])可以安排類似的管理系統供學生分析和設計,此時每組要求選擇不同的系統進行設計,每組獨立設計系統功能框圖、分工并實現,從而鞏固并強化課堂所學的內容。
七、第二課堂
第二課堂可以參加相關的學科競賽,如“ACM大學生程序設計競賽”、“藍橋杯全國軟件和信息技術專業人才大賽”等學科競賽,從而開闊學生的視野,加強學生的實際編程能力。當然,如果想參加相關的學科競賽,還需要有一定的數據結構知識和算法知識,這需要對學生進行相關的培訓或由學生自學完成。這對于學生是一次很好的升華,學生獲得的相關學科競賽讀書對于將來的就業是一個很好的準備。
綜上,通過一個典型案例將C語言程序設計課程內容有機地組織起來,將C語言教學內容分成五大部分,使學生容易理解并形成一個較強的印象。在實驗室教學,人手一機,邊講邊練,重在培養學生分析問題和設計程序的能力,培養學生的結構化程序設計思維。
參考文獻
[1]蒲海波 興趣驅動的案例教學在C語言教學中的應用[J]計算機光盤軟件與應用 2013年第7期:192-193
[2]丁海燕 高級語言程序設計案例教學模式的探討[J]計算機教育2011年第8期: 65-68
[3]吳美紅 基于CDIO模式的案例教學在C語言程序設計中的應用[J]電腦知識與技術 2013年第11期:2632-2633
[4]李偉光 提高C語言實際應用能力的研究與實踐[J]煤炭技術2012年11期:242-243
[5]薛小鋒 案例教學在非計算機專業C語言程序設計教學中的應用[J]江蘇技術師范學院學報2010年第4期:80-82
[6]波 模塊化案例教學在C語言程序設計課程中的應用[J]計算機教育 2009年第21期:62-65
ACM是一項針對國際大學生程序設計的競賽,在競賽中大學生通過程序設計來展示自身分析和解決問題能力。本文介紹對ACM進行了概述,在程序設計評測系統的基礎上,提出了一種基于ACM競賽模式的數據結構實踐教學改革措施,對數據結構實踐教學進行了深入探索,進一步完善了計算機程序設計類課程的實驗教學體系。
【關鍵詞】
數據結構;ACM;編寫程序
1 ACM競賽的概述及意義
1.1 ACM競賽的概述
ACM是由美國計算機協會舉辦的國際大學生程序設計競賽,ACM被認為是水平最高、規模最大的國際大學生程序設計競賽。ACM為大學生提供了一個展示自身分析解決問題能力的平臺,大學生通過所學的計算機程序設計理論知識來解決問題,其理論知識主要包括數據結構、程序設計語言、物理數學模型、算法分析等。ACM在競賽過程中為選手規定了比賽時間,在規定時間內,根據參賽者所作比賽題目的數量和準確度和做題時間長短來進行名次評判。ACM是計算機類最具影響力的國際級競賽,受到世界各知名大學和各著名TI企業的關注。通過ACM競賽可以在競賽壓力環境中培養參賽著在軟件程序開發過程中的團隊合作精神和自主創新能力、理性實踐的能力。我國ACM競賽起步較晚,從1996年開始舉辦時至今日已經成功舉辦了七屆,這一針對高校大學生而舉辦的競賽得到了國內眾多知名高校的積極響應,其發展趨勢迅速,取得了卓越的科技成果。
1.2 ACM競賽的意義
程序設計類課程是高校計算機相關專業課程中的重要組成部分,所占比重較大,這類課程對實踐性要求很高,這類課程旨在培養學生具有一定的程序設計能力。通過ACM競賽可以全面考察學生程序設計語言和算法的學習使用情況,ACM這一競賽平臺將程序設計類課程的理論與實踐完美的結合起來,以此來提高學生程序的設計能力。
2 ACM評側系統的設計
ACM評測系統集在線程序設計、算法設計練習、競賽于一身。該系統中存儲有大量的競賽試題,學生可以根據自身需要進行自主練習或競賽,學生在該系統上在線編寫相關競賽試題的程序代碼,編寫完成后提交程序代碼,系統可以自動進行編譯,從而生成可執行文件,并對程序執行測試,最終輸出測試結果。可以將ACM模式推廣到數據結構、C/C++、EDA等與程序設計相關的課程中進行實踐教學,該系統的主要功能包括以下幾部分內容:(1)規定代碼的通過標準,從程序耗費總內存、運行時間等多個方面審查提交代碼,并輸出評測結果。(2)支持JAVA、C++、C、PASCAL等程序語言的編譯,制定了具有可擴展性的編輯器擴充規則,以此來支持其他程序語言的編譯。(3)設計的系統具有支持集體或個人申請競賽,并提供相應的競賽環境的功能。(4)系統以RSS聚合方式匯總競賽報告,通過RSS閱讀器即使不訪問站點也可以自動獲得競賽報告的更新。(5)系統可以自動監管各個數據庫的連接狀態,以此來調控系統的性能。(6)系統定義了自動約束規則,具有系統在線配置的自我調節能力。ACM評測系統在運行速度、系統穩定性和程序負荷能力上均具有良好的性能,為各類編程課程提供了一個良好的實驗環境。
3 ACM數據結構實驗教學體系設計
數據結構相關內容的課程是計算機專業的重要課程之一,數據結構這門課主要側重于軟件設計中所涉及到的各種存儲結構、數據結構、基本運算、程序性能、以及算法實現等基本技術。學生在遇到實際問題時可以通過學習的理論知識選擇合理的數據結構,并設計出符合實際情況的優良算法,以此來提高學生軟件開發的實踐能力。學生軟件實踐能力的培養可以通過開設數據結構相關類實驗課程來實現,這種實驗類課程將理論與實踐相結合,將學生在書本、課堂中學到的理論知識用于解決實際問題,有效地培養學生的創造性思維,并提高學生分析、解決問題的能力,為從事計算機類相關工作的學生奠定堅實的實踐基礎。傳統的實驗類課程不能充分發揮其根本作用,只能培養學生掌握基本知識的能力,并且實驗類課程課時較短,在短暫的實驗課程中無法真正鍛煉學生分析解決實際問題的能力,學生在課余時間也無法找到正確的渠道進行練習學習,也沒有專業人士給與指導建議。ACM競賽經過長時間的探索已經日趨成熟,將ACM模式應用于數據結構等計算機類實驗教學中,將大大提高教學效果。
3.1 ACM模式教學優勢
基于ACM模式的數據結構等程序設計類課程的實驗教學系統是通過網絡進行的,這種教學模式不受時間、空間的局限。學生在課程學習中難以將實際問題中客觀事物與數據結構中的理論數據很好地銜接在一起,缺乏系統解決問題的能力和方法,通過ACM模式的實驗教學恰好可以很好地解決這一問題。學生在ACM模式教學下進行實踐學習,豐富了自身計算機理論知識儲備并提高了實踐能力,將所學理論知識應用于實際問題中,通過一系列實踐訓練真正掌握數據結構的精髓。ACM競賽為學生提供了一個學術交流平臺,通過ACM組隊形式的競賽培養學生團結合作的精神,為以后軟件項目團隊化的合作奠定堅實基礎。
3.2ACM模式教學設計
將基于ACM模式的計算機程序設計類課程實驗教學體系分為以下三個層面:基礎知識訓練型實驗、實際問題設計型實驗和創新型實驗。
(1)基礎知識訓練型實驗。學生通過基礎知識訓練型實驗的練習可以鞏固并深入理解所學的知識?;A知識訓練型實驗主要涉及有線性表、隊列、棧、順序折半查找、廣義表、圖、樹、內部排序等多種內容。這一環節要求學生掌握基本的數據結構和數據方法,并且要求學生具有較強的問題分析能力和任務定義能力。
(2)實際問題設計型實驗。通過實際問題設計型實驗可以充分挖掘學生自身的創造力,將所學理論知識運用于實際問題的解決中。實際問題設計型實驗主要涉及停車場車輛管理、電話號碼及歸屬地查詢、哈夫曼碼編碼器等內容。這一實驗環節要求學生用所學的數據結構知識設計出復雜的軟件系統,主要檢測了學生掌握算法設計和分析、遞歸思想和方法等方面的能力。
(3)創新型實驗。創新型實驗與各種各種比賽、課外科技活動、科研項目等相結合,增加學生軟件開發、設計的能力。這一實驗環節要求學生掌握面向過程的設計方法、面向對象的設計方法、基本的軟件重用方法等內容。
4 總結
通過ACM教學模式可以培養學生解決實際問題的能力,而且不受解題方法的限制,學生通過ACM這一學術交流平臺在展示自己能力的同時可以學到很多東西,激發了學生的學習熱情和潛力。
【參考文獻】
[1]朱月秀.基于ACM競賽的C++程序設計課程教學改革[J]. 漳州師范學院學報(自然科學版),2012,01:96-99.
關鍵詞:程序設計語言;程序調試;教材;編程能力
中圖分類號:G642 文獻標識碼:B
隨著計算機應用的普及,計算機編程能力已經不僅僅是計算機專業學生需要掌握的能力,因而我國高校普遍為大學生開設程序設計課程。目前主要的程序設計課程包括:C/C++程序設計,VB/程序設計和Java程序設計等。從上海參加計算機等級考試的學生來看,C/C++程序設計的學生占60%,VB/程序設計占35%,Java程序設計占約5%,因此“C程序設計”仍然是高校學生學習計算機編程知識最重要的一門課程。
盡管C程序設計語言問世已經三十多年了,但在課程教學中,很多教師和學生仍然覺得C程序設計語言很難駕馭。那原因是什么呢?作者認為這主要是由C程序設計語言本身特點決定的。首先,C程序設計語言是一種結構化程序設計語言,用它進行程序設計的方法是結構化方法,其思想與我們日常生活中處理問題的思路有較大的出入;其次,C程序設計語言最早是用于開發系統軟件的,是一種“中級語言”,其語法限制不太嚴格;第三,C程序設計語言中強大的運算功能和豐富的數據結構(如指針等)對初學者的邏輯思維能力要求較高,不容易學懂。針對C程序設計語言這樣的特點,要學好這門語言,一本好的教材顯得特別重要。
和學習外語一樣,學習一門程序設計語言的最終目的是能運用這種語言來解決實際問題,因而,程序設計課程的教學和考核也應該面向這樣的目標。2009年4月,上海市計算機等級考試大綱再次進行了修訂,對作為二級的主要科目“C程序設計”的大綱進行了較大的修改:將原來的紙質試卷書面考試改為上機考試,使用“上海市高校計算機等級考試通用平臺”進行考試,建議使用Microsoft Visual C++ 6.0作為程序開發環境;為加強對學生應用C程序設計語言解決問題的能力,新增一種題型――程序調試題。其目的就是引導教師和學生在提高動手實踐和實際應用能力的方面下功夫。
對于“C程序設計”的推薦參考教材,上海市等級考試二級命題組決定仍舊選擇由譚浩強教授編著、清華大學出版社出版的《C程序設計》。隨著計算機技術的迅猛發展,上海市等級考試在不斷發展,譚浩強教授的《C程序設計》也從第一版、第二版演變到了第三版,那么,為什么上海市等級考試始終選譚浩強教授的《C程序設計》作為“C程序設計”科目的參考教材呢?結合自己的教學和命題實踐,我們深刻體會到譚浩強教授編寫的《C程序設計》教材有以下三個重要特點。
1由淺入深,通俗易懂
譚浩強教授豐富的教學經驗和編寫教材的經驗在《C程序設計》中得到集中體現,由淺入深、循序漸進的內容安排和通俗易懂的寫作風格,使《C程序設計》非常適合作為程序設計的入門級書籍,也推動了中國計算機基礎教育的普及和發展;《C程序設計》教材對C語言語法部分、控制結構部分、數組、指針等的講解都非常流暢,給讀者一氣呵成的信心和欲望。金山公司前總裁兼CEO雷軍曾經說過:“是譚浩強讓程序員感到了寫程序就是自己的生命?!?/p>
2概念清晰,融會貫通
《C程序設計》針對初學者的特點,精心策劃、準確定位,使得全書概念清晰、融會貫通;將必要的基礎知識融會貫通到程序設計課程中,能給初學者打下良好的程序基礎,對學生的知識結構建設以及今后的深造和提高都大有裨益;全書強調用結構化程序設計方法編寫程序,自始至終用完整的程序輸出范例來演示所講的概念,內容全面,層次清晰,適用于不同層次的學習對象和不同課時的教學單位,特別是高校計算機基礎教學。
3例題豐富,啟發思維
《C程序設計》全書結構清晰,例題豐富,每章都附有大量習題,并且有配套的習題解答,非常有利于學生復習鞏固課上所學的知識,也便于教師設計實驗課的教學內容。譚浩強教授還在書中引導學生帶著問題學習、在啟發中得到理解、在思維中得到提高、在實踐中得到認知。通
過使用這本教材來學習C程序設計語言,初學程序設計的學生可以達到熟練運用C語言進行小規模應用開發的能力。
正是因為以上特點,譚浩強教授的《C程序設計》把原先很多人認為深奧難懂的C語言變為只要具備計算機初級知識的人都能學會一門程序設計語言,能夠使學生對C語言產生濃厚的學習興趣,是學習C語言的一本理想教材;也正是這些特點,讓我們始終選擇譚浩強教授的《C程序設計》作為教材。
參考文獻:
[1] 譚浩強. C程序設計[M]. 3版. 北京:清華大學出版社,2005.
關鍵詞:程序設計;教學改革;實踐能力
中圖分類號: G642文獻標識碼:A文章編號:1009-3044(2012)02-0366-02
Practice on the Teaching of the Programing Course
YUAN Hui-yong, YANG Si-qing, YI Ye-qing
(Department of Computer, Hunan Institute of Humanities, Science and Technology, Loudi 417000, China)
Abstract: This paper first analyses the problem in teaching of "C Language"," Data Structure" and "Algorithm Design and Analysis", and then propose a reform of teaching by improving teaching method, integrating teaching content and strengthening practice teaching. Results show that the reform of teaching can effectively stimulate students interest in learning, improve the efficiency of learning and the ability of programming.
Key words:programming; reform of teaching; ability of practice
1概述
目前C語言程序設計、數據結構、算法分析與設計是計算機及其相關專業中非常重要的專業課程。在以往教學中,這三門課程采用相對獨立、分開授課的方式,導致課程內容脫節與重復,教學效果差,學習完三門課程后卻不能編寫程序的大有人在。這三門課程都以培養學生解決實際問題的程序設計能力為共同目標,因此,如何將三門課程有機地結合起來,構建程序設計系列課程的新體系,整合教學內容,改進教學方法,切實提升學生的程序設計能力,成了當前計算機專業教學改革中亟待解決的問題。
2教學中存在的問題
在傳統的教學中,C語言程序設計、數據結構、算法分析與設計三門課程的分開授課,課程知識沒有整合,對課程知識中存在重疊的內容,只是做簡單的重復講解(如C語言和數據結構課程中都有數組這個教學內容),教學深度不夠。教學中注重講授基本理論,忽略了程序設計過程中涉及的方法和技術(如算法分析與設計課程通常是將已有的經典算法在數學模型和數據結構上給學生解釋),理論教學與實踐教學結合不夠緊密(如數據結構在講授了某種抽象的數據關系和在計算機中的表示與實現后,并沒有將這種結構用到解決實際問題中去),造成有些學生雖然具備了一定的理論基礎,但由于實踐教學薄弱,動手能力差。
3具體改革措施
我們改變了以往C語言程序設計、數據結構、算法分析與設計分開授課的模式,而是將這三門課程作為一個整體,以培養學生解決實際問題的程序設計能力為目標,從組織教學內容、改進教學方法、突出實踐教學等方面進行教學改革與實踐。
3.1整合教學內容
C語言程序設計是數據結構的前導課程之一,學生對它的掌握程度直接關系到數據結構課程的教學效果。算法分析與設計是計算機專業程序設計類的核心課程,在學習該課程之前,要求學生們掌握了基本的數據結構知識,能熟練運用一門或多門編程語言,并具備一定的編程經驗。
我校原來的C語言、數據結構和算法分析與設計三門課程是相對獨立、分開授課的,學習效果不理想。我們將這三門課程的知識進行整合,采用同一教師授課,做到了前導課、后續課的有機銜接,并重新制定了三門課程的教學計劃,以知識點為單元,將這三 門課程很好地結合起來。在C語言的教學中,以C語言為主線,適當穿插數據結構中的相關內容,使C語言與數據結構有機地結合在一起,如我們將C語言中的數組和數據結構中的直接插入排序、冒泡排序、簡單選擇排序、順序查找、折半查找方法放在一個知識單元中。在數據結構教學中,穿插了算法分析與設計的有關知識,如在講述哈夫曼樹和圖的最小生成樹時,穿插了講述了貪心算法,在講述圖的最短路徑時介紹了動態規劃算法。
我們不再把C語言當做一門語言來講解,加強了數據結構、算法設計、邏輯思維和編程方法的教學。數據結構課程不再只注重講授抽象的數據關系和存儲結構,而要求學生用C語言編程實現各種算法,并結合實際應用,在ACM/ICPC在線評測系統上完成相應的練習題目,學生不再感到枯燥無味,不僅較好地解決了數據結構教學中學生上機困難的問題,也提高了學生的程序設計能力。在算法分析與設計課程教學中,我們選擇一些難度適中、能結合實際問題和相關課程的知識來講解,使學生既能理解,又能拓展創新。
3.2改進教學方法
我校屬于應用型本科院校,其教育目標著重于培養具有實際工作能力的技術型和應用型人才。在C語言的教學中我們采用了“案例”教學方法,從日常生活中選擇能典型反映教學內容的案例,所選案例難度適中并能反映多個知識點。如選用了“學生的成績管理”,該案例覆蓋了C語言中的循環結構與數組,涉及數據結構中的排序與查找。在該案例中穿插介紹了數據結構課程中的直接插入排序、冒泡排序、簡單選擇排序和順序查找;通過介紹C++中的排序函數qsort()激發學生自覺地學習C++標準模版庫;并提出如何保存學生信息以避免重復輸入數據的問題,引導學生自學C語言中的文件操作,培養學生的再學習能力。在算法分析與設計課程的教學中,我們采用了“任務驅動”教學方法,將具體的算法設計策略融入到一些“任務”中,課堂教學以任務為主,引導學生利用算法設計策略探索解決方案,在課后的實踐環節,將結合實際應用且融入了知識點的任務放到ACM/ICPC在線評測系統上,讓學生在課后根據任務描述,自主探索問題解決方案,并提交程序代碼。
在教學過程中,對典型例題力求講透徹,并提出問題給學生思考。如斐波拉契數列,講解了分別使用變量交換的循環結構、使用數組的循環結構和遞歸三種編程方法,并比較了三種方法的優缺點,使學生深刻體會到了采用遞歸求解斐波拉契數列的低效,引導學生理解使用數組的高效是基于算法分析與設計課程中的動態規劃的思想,并且穿插介紹了數據結構課程中算法的時間復雜度與空間復雜度的度量;再提出大斐波拉契數列的求解問題,介紹使用數組進行高精度計算以及使用矩陣和二分法的求解方法,激發了學生的學習積極性。在例題的講解過程中,充分利用多媒體教學手段,加強了例題講解過程中的現場調試與分析,鼓勵學生對具體問題進行分析和研究,培養學生的邏輯分析和判斷能力,重視上機訓練,養成良好的編程習慣。
3.3加強實驗教學
這三門課程都是理論與實踐并重的課程,在教學中必須將理論教學與實踐教學緊密結合。我們從以下幾個方面來加強實驗教學:
1)重新編寫實驗指導書。按照教學內容的知識點,綜合可操作性、趣味性和適當的難度,編寫了適合教學要求的實驗指導書,既保證了實驗的可完成性,又增強了學生的興趣。
2)建立在線題庫。在ACM/ICPC在線評測系統上開設了C語言程序設計、數據結構、算法分析與設計的專題訓練,每個專欄按照教學知識點安排了不同難度的練習題,學生可以根據自身的能力,完成相應等級的題目,在探索與解決問題的過程中獲得學習成就感。
3)組織程序設計比賽。ACM/ICPC在線評測系統上安排了與教學知識點相關的競賽真題,鼓勵學生組隊、按照比賽規程進行模擬比賽。通過比賽,學生對教學知識點有了更深入的理解,不僅增強了學生的實踐動手能力,提高了學習興趣和積極性,也使學生提前了解ACM比賽的規則和比賽真題,訓練了學生的參與意識、競爭意識和團隊精神,為以后組織學生參加省程序設計比賽打下良好的基礎。
4)開設課程設計。課程設計的題目以典型的問題或實際的工程為主,如數據結構課程選用了“教務計劃編制問題”,讓學生運用圖論中的拓撲排序來求解這個實際問題。通過課程設計,培養了學生綜合運用所學知識進行分析和解決實際問題的能力,使學生不僅學到了解決問題的辦法,同時加深了理論的理解與掌握,做到了理論教學與實踐緊密結合。
3.4改革考核與評分標準
考試作為課程教學的一個重要環節,對學生的學習具有明顯的導向作用。這三門課程原來的考核分為平時成績和期末考試,這樣的考核方式很難考察學生的實踐能力,導致大部分學生只注重期末考試,而忽略學習過程,很難有效的提高學生的創新能力和實踐能力。我們認為這三門課程的考核應著重考核學生的程序設計能力,而不是死記硬背一些基礎知識。為此,我們引入了ACM/ ICPC在線評測系統及,對課程的考核進行了大膽改革,評分標準也作了修改,提高實驗考核成績在課程總評成績中的比重,以此來引導學生認真對待實驗和課程設計,切實提高學生的實踐動手能力。
4結束語
實踐證明,將C語言程序設計、數據結構、算法分析與設計這三門課程有機結合的教學改革,能夠很好地激發學生的學習興趣,學生在掌握基本理論和知識的同時,程序設計能力、數據結構和算法設計的應用能力也得到了很好的培養,我校學生在近二年的湖南省程序設計比賽中均取得了較好的成績。
參考文獻:
[1]譚浩強. C程序設計(第2版) [M].北京:清華大學出版社,2005.
【關鍵詞】C語言 編程 結構化
1 C語言的編程特點
1.1 C語言的定位
很多人都普遍的認為C語言是在B語言的基礎上發展過來的一種高級編程語言。然而從編程語言的層次結構方面來說,我們應該認為C語言,是在匯編語言的基礎上發展而來的,它比匯編這類編程語言要高級,但是比一些可視化的編程語言又低級,所以準確來說,C語言應該算是中級編程語言,或者稱為準高級程序設計語言。目前很多高級程序設計語言都是在C語言的基礎上發展而來的,或者至少借鑒了C語言程序設計的思想。80年代初,Bjarne Stroustrup在貝爾實驗室對標準C進行了改進和完善,C++得以誕生,使得面向對象的程序設計思想得以提出和落實;21世紀初,人們將C語言和單片機相結合,開發出來了應用于單片機編程的C51語言,使得單片機的程序設計從反復的匯編語言設計中抽身出來,大大的提高了程序的設計效率。
可見C語言在整個編程語言的發展過程中屬于承上啟下的作用,同時其自身的應用領域又在不斷的更新和發展。
1.2 C語言的編程特點
通過上述C語言的定位可知,它既具備高級程序設計語言的結構性和層次性特點,同時也兼具了低級程序設計語言的實用性。
(1)用相應的C語句可以實現對微機操作中的字節、地址等進行直接訪問。
(2)基于函數的結構化特點,使得復雜的軟件系統可以由多個人,以設計子函數的形式,分別各自進行程序開發。之后進行函數的匯總,最后由主函數,按照既定的程序流完成對各個子函數的調用就行。
(3)豐富的數據類型,尤其是指針類型,可以很方便的應用于復雜數據和大數據的訪問和處理。
(4)由于C語言基本上不向低級語言那樣直接涉及到對硬件的操作,所以C語言程序往往具有很好的通用性,方便程序移植。
2 C語言的編程技巧
2.1 扎實基本工
在進行C語言程序設計之前,首先要熟悉運算符、表達式以及各鐘類型數據的定義和使用方法,其次對順序、分支和循環三大程序結構要有較好的把握,并熟練使用while循環、for循環、switch語句等。如果要在程序的設計上有進一步的提高,那就需要對“指針”能夠進行熟練的使用了。指針可以用于表示變量,但更多的是用于代表數組、存儲地址以及函數地址。在代替不同變量時將返回不同的值,可以說指針的功能十分強大。對其熟練使用有助于程序設計的簡潔和便利。
2.2 立足C語言的結構化的特點,熟練程序設計基本構型
C語言典型的特點就是結構化,在進行具體的程序開發時,應該首先要根據設計的軟件項目,然后進行任務的細分,由于C語言不需要編程人員去配置硬件資源,因此程序設計人員可以把更多的精力放在各個細分任務的子函數設計上,考慮用最簡單的程序結構去實現。在數據類型的選擇上,能夠用短數據類型就盡量用短數據類型。
另外,為了提高程序代碼的執行效率,建議C語言程序設計人員要了解C語言程序最終運行的硬件的基礎機構,是在微型計算機上運行,還是在單片機上運行。在了解硬件平臺結構及內部資源的前提下進行相應的程序設計,將有助于提升程序的運行效率。
3 C語言的實踐應用
3.1 混合編程
很多程序設計人員都認為C語言比匯編語言高級,所以認為沒有必要去學習和了解低級語言。其實這種思路是及其錯誤的。匯編語言之所以稱之為低級語言,是因為其更加貼近于硬件。在編程時一定要明確的在代碼中描述清楚,數據如何從一個存儲單元送入另一個單元,因此顯得編程復雜,由于其直接和硬件打交道,所以被稱為低級語言。但是其運行效率卻是最高的。所以在C語言程序設計上要有質的飛越,有必要了解匯編語言的編程思路和理念。有條件的話可以將C語言和匯編語言混合編程,從而發揮出兩類編程語言各自的優點,達到設計程序的最優化。
在進行C語言和匯編語言的混合編程時,無論是采用C語言調用匯編,還是匯編調用C語言,還是C語言嵌入匯編的方式,都應該對調用關系、各模塊的連接以及參數的傳遞進行妥善的處理。對于調用關系,則需要對調用的函數和過程進行說明;通過明確函數和變量的命名以及存儲模式的關聯性,從而實現各模塊的有效連接;通常情況下往往通過堆棧的方式來實現參數的傳遞。
3.2 C語言在工程上的應用
C語言在電力電氣系統、交通控制系統以及機器人控制方面都有廣泛的應用。下面以工廠通風控制系統的C語言程序設計為例來加深對C語言軟件編程思想的理解。
工廠通風控制程序的設計時采用模塊化得設計思想,即單獨的編寫初始化函數void Initial(void);中斷處理函數void**(void)interrupt;數據采集函數unsigned char ADconvert(unsigned char address)以及其它函數等。然后由主程序負責對各個子函數的調用,從而實現對工廠通風系統的控制。簡化的主程序如下:
main( ){ ... Initial(void);
while(l){ReadAi( );ADconvert(unsignedchar address);
DataChange( ); DisPlay( ); …}
整個系統由于需要不停的對工廠數據進行采集,所有主程序的結構就設置成了循環結構,當通風控制系統有序的進行準備工作之后,通過調用初始化函數,程序就開始進入主循環,主循環中通過調用采集程序,完成對測量對象的循環檢測以及對顯示程序,數據處理函數的循環調用。一遍又一遍的不停循環執行主程序。在這個主程序循環的過程中,如果有異常情況發生,則隨著中斷觸發事件的發生,將進入中斷響應,實現對中斷函數的調用。
4 總結
C語言作為編程語言中經典的一類程序設計語言,因其結構化、可移植化、編程簡介的特點,被廣泛的應用國民生產的各個領域。而隨著信息技術、互聯網技術以及物聯網技術的飛速發展,未來C語言的應用領域將變得更加廣泛。對C語言在軟件編程方面的研究和分析將變得更有意義。
參考文獻
[1]顧泰龍,李遠靜.基于C語言的計算機軟件編程實驗研究[J].軟件工程師,2013(08).
[2]李強.計算機軟件開發語言的選擇探討[J].電子制作,2013(09).
作者單位
關鍵詞:C語言;C++語言;程序設計
中圖分類號:G642 文獻標識碼:B
文章編號:1672-5913(2007)14-0022-02
1引言
大學計算機科學專業的程序設計語言課程,一般分為必修和選修兩種。C和C++都作為必修課;而VB和Java等一般作為選修課?,F在大多數高校計算機科學專業開設程序設計語言課程的順序都是,先開C語言,再開C++語言。然而,我們在教學實踐中發現,學生學習C語言程序設計,接受了“自頂向下,逐步求精”的模塊化程序設計思想,在學習C++語言時,對C++語言的特色:類和模板所提供和支持的“自底向上”的面向對象程序設計思想,很難適應、理解、接受和掌握。同時,由于課時的壓縮,兩門語言都要開設,學時更顯不足,致使學生兩門語言課程都沒有充分的時間學通、學透;更有甚者,正常的教學內容不能完成,學生一知半解、似懂非懂,課程的難點知識沒有時間講和學。這種結果直接影響后續課程(比如,數據結構)的學習;同時學生動手開發軟件的能力也將受到影響。
本文在分析比較C和C++程序設計語言異同的基礎上,結合多年的教學實踐經驗,提出在大學計算機科學專業中,直接開設C++程序設計語言,不再開設C語言的觀點。并根據作者的教學實踐經驗,給出直接開設C++時,教學內容、教材選擇和開設時間的建議。
2程序設計語言C與C++的比較
2.1C與C++的共性
C++是C的增強版,是在C的基礎上增加了數據抽象和面性對象的程序設計這些新特點,很自然C++擁有C語言的基本功能。它支持結構化的程序設計,任何用C寫的程序都可以在C++環境下運行。
在C和C++語言中,標識符、變量、常量、基本數據類型、指針、表達式、運算符的優先級等的規定都相同。枚舉類型和結構體類型的定義方法也相同。關系和邏輯運算、條件語句、循環語句這些控制流語句的定義和使用也都相同。C和C++中數組的定義和使用相同。函數的定義與調用基本相同,只是C++引入了引用參數。也正是由于引用參數的引入,使得C++的使用比C更方便。關于動、靜態變量及其范圍的規定在C和C++中相同。因此??梢哉f,C語言所擁有的功能,C++都有,而且也是C++的基本部分。但是,C++比C具有更強的功能,具有C所沒有的特性――數據的抽象和支持面向對象的程序設計。同時,關于枚舉變量,結構體變量的聲明C++的語法約定更簡潔方便。
2.2C與C++的不同
C與C++在程序設計的思想與規模、動態存儲管理、文件使用、枚舉和結構體類型、輸入和輸出,以及程序注釋等方面存在差異。C++不僅具有C的所有功能,可以實現所有C語言所能實現的功能,而且C++的功能更強大,使用更簡潔方便。因此,使用C語言設計程序所能解決的實際問題,使用C++語言設計程序也一定能夠解決,而且實現起來更方便。
2.3C++的特色
C++最大的特色是提供了數據的抽象和實現數據抽象類型的機制――類,以及支持面向對象程序設計的封裝、繼承和多態等特性。由于類的出現,使得C++中的數據類型不再局限于系統所提供的固有類型,用戶可以根據自己的實際需要設計創建新的數據類型。同時,由于類的使用,使得數據和操作被封裝在具體的類中,實現了信息的隱藏。C++提供了兩種構造新類的方法:繼承和構成。這兩種構造方法使得C++具有面向對象程序設計的特性。C++還提供了虛函數機制,這使得類的操作可以實現動態邦定。C++中的重載機制使得C++的使用更方便快捷和人性化。C++的模板使得C++具有多態特性。另外,C++的異常處理機制使得程序的調試變得容易和方便。還有C++的虛基類,使得它非常適合用來開發面向對象的程序。
C++中的引用類型,使得函數的參數可以采用引用參數,避免了C語言中函數參數的單向值傳遞所帶來的弊端。而且使用起來非常方便。
C++還提供了作用域限定運算符(::),該運算符可用于解決名稱沖突。還可用于指定標識符的有效范圍,如名稱空間中標識符的使用。
標準C++還支持名稱空間[3~5],除了系統提供的標準名稱空間std外,用戶還可以定義自己的名稱空間。名稱空間的使用給程序設計帶來了很大的方便。
C++的上述諸特色,顯示了C++不僅能實現C程序設計語言所支持的結構化程序設計,而且還支持面向對象的程序設計。可以開發出更大更復雜的應用軟件。
以上C與C++的比較可見,C++的基本部分與C語言基本相同,而且C++的語法相對于C語言的語法更簡潔方便易使用。因此,C++完全可代替C來完成程序設計,完全可以在大學計算機科學專業的本科生中直接開設C++程序設計語言課程,而不用先開設C語言,再開C++。這樣,可以將節省出一部分學時分給C++課程,使得C++的學時更充足些,學生也掌握地更好些。
3程序設計語言C與C++開設建議
通過以上的分析比較,可見在高校計算機科學專業程序設計語言課程的開設中,可以不用開設C程序設計語言,而直接開設C++語言程序設計。
C++的教學內容應該包括:基本知識部分:程序設計與問題解決概述;C++語法、語義以及程序開發過程;數值類型、表達式與輸出;程序輸入與軟件設計過程;條件、邏輯表達式與選擇控制;循環;函數;作用域和生命期;高級控制結構;固有數據類型和用戶定義的簡單數據類型。C++高級知識部分:結構體、數據抽象和類;數組;基于數組的表;面向對象的軟件開發;指針、動態數據和引用類型;鏈結構;模板與異常;遞歸。
C++課程開設時間放在一年級第二學期比較適宜。因為學生在第一學期已經學習了一些關于計算機的入門知識,對計算機科學有了一定的了解,這時開設C++程序設計語言,學生接受起來比較自然。而且直接學習C++語言,沒有別的計算機語言的影響,學習起來更易于接受。C++的課時建議為周學時4,以保證學生有足夠的學習、吸收和消化知識的時間。另外,這個學期開設C++可為學生后續專業課程(如,數據結構)的學習做鋪墊。更重要的是作為計算機科學專業的本科生,在當前的形勢下掌握C++這一通用的編成語言,不僅為將來的發展奠定良好基礎;也為今后參與社會競爭打下堅實基礎。
以上觀點的有效實施依賴于C++程序設計語言教材的選擇。在選擇教材時,必須選擇適宜作為入門語言學習的C++教材。在此建議采用參考文獻[3]中的教材――美國Jones and Bartlett Publishers出版的原版教材“Programming and Problem Solving with C++ (Third Edition/Fourth Edition)”。該教材知識講述邏輯性強,內容安排循序漸進,講解非常透徹清晰,是國內許多中文教材無法媲美的;而且沒有任何先驅課程要求,學生學習起來很容易理解和接受,該教材是美國大學計算機及相關專業程序設計語言的入門教材,是美國最暢銷的計算機科學教材,也是教育部推薦使用的計算機專業類影印版教材。作者在過去4年中使用該教材對計算機科學專業的學生講授C++程序設計(雙語教學)。4年以前作者曾多次講授C語言程序設計。結合多年的教學實踐,作者提出在大學計算機專業的程序設計語言課程設置中,直接開設C++程序設計語言的觀點。關于教材的選擇,也可選用其他一些翻譯過來的國外優秀教材,如參參考文獻[5]中的《C++大學教程》(第五版),該書是針對一學期的課程設置的,英文版在國外也是作為計算機專業的大學一年級教材;或者考文獻[4]中的《C++核心思想》。作者的經驗是最好選用國外原版教材,而且以參考文獻[3]為最好。
參考文獻:
[1] 譚浩強. C程序設計(第二版)[M]. 北京: 清華大學出版社, 1997.
[2] 龔杰民, 金益民, 殷勇. 標準C語言程序設計及應用[M]. 西安電子科技大學出版, 1995.
[3] Nell Dale, Chip Weems, Mark Heading. Programming and Problem Solving with C++(Third Edition)[M]. 美國: Jones and Bartlett Publishers, 2003.
[4] [美]Cay Horstmann著, 晏海華等譯. C++核心思想(第三版)[M]. 北京: 電子工業出版社, 2004.
[5] [美]戴特爾等著, 張引等譯. C++大學教程(第五版)[M]. 北京: 電子工業出版社. 2006.
作者簡介:謝娟英(1971-),女,陜西西安人,副教授,主要從事智能信息處理方面的應用研究。
通信地址:陜西師范大學98# 郵編710062
Tel: 029-85307830(home),13088965815
關鍵詞:研究;計算機編程思想;結構化程序設計思想;面向對象的程序設計思想;AOP編程思想
中圖分類號:TP3文獻標識碼:A文章編號:1007-9599 (2012) 05-0000-02
隨著經濟社會的發展,信息技術也迎來了前所未有的快速發展,計算機編程的應用范圍也愈加廣泛。而其中的編程思想,作為一個主要條件,可以使編程人員編出更好的程序,本文分析了目前編程界最為主流的兩種計算機編程思想,同時和將要興起的新技術AOP,與OOP相比,其影響力巨大。因此,本文分析了其編程思想以及優越性,還闡述了開發步驟。
一、計算機編程思想研究
(一)結構化程序設計
對于結構化編程思想,其為面對繁雜任務的時候,防止混亂的一種編程思想,重視將程序結構進行規范化,要按照大腦極易理解的方式,合理組織繁雜問題的求解過程。針對此編程思想,編程者應該遵循結構形式,進行程序的設計及編寫,保證程序的正確結構,方便地進行程序正確性的證明,該思想重點有以下幾點內容:
運用由頂往下逐漸細化的方法。因為結構化編程運用了功能抽象與模塊分解,其能合理地把繁雜程序任務分解為容易處理及控制的一些子任務,隨后實施級別更細的任務分類,保證最終分出的子任務均是進行獨立編程的子程序模塊。隨后根據某些調用以及結構關系,將子程序模塊進行合理組織,最終得出需要的程序。根據結構化程序設計思想,得出的程序具有如下好處:很好的結構、每個模塊之間有著簡單清楚的關系、在各個模塊內,均有基本單元構成。因此,得出的程序清楚易讀,良好的可理解性,正確性還易驗證,維護、調試以及修改容易進行。出現了結構化編程思想,使之前軟件開發存在的混亂狀況消除,編程人員編寫的程序存在優越的結構。還因為運用“自頂向下以及逐步細化”的方法,使人們智力合理地組織起來,對軟件工程化研發是有益的。所以程序維護以及設計工作效率得以提升。
若干基本結構構成程序,對于任意的大型程序,均包括三種基本結構,這些基本結構使某個結構化的程序得以順序地組成。主要有順序、選擇以及循環結構這三種基本結構。軟件界的具體實踐以及結構化定理已證明,對于任意繁雜問題的程序設計,均可運用順序結構、選擇結構以及循環結構構成,同時還具備下面一些特征:僅一個入口及出口;在結構內,沒有死循環,在程序內,以上三種基本結構的順序執行關系得以構成。
根據功能,能把大型程序劃分為若干基本功能模塊。一些子模塊一起構成各個模塊,每個模塊在功能方面互相獨立,各個功能模塊均有進行計算機控制以及數據處理的功能。盡量使模塊間的聯系簡潔。最終將模塊根據某些層次關系,實施組織,繁雜程序的功能得以構成。
(二)面向對象的程序設計
針對面向對象的程序設計,其編程思想是運用消息、對象、類、繼承以及封裝等這些基本概念,實施程序設計。為使結構化程序設計方法處理不了的代碼重用這些問題得以解決,便給出了面向對象程序設計技術,面向對象的程序設計編程思想包括如下特點:面向對象的特點之一就是封裝,其為類與對象概念的重要特征。封裝給模塊帶來了比較良好的獨立性,程序修改與維護起來較為簡單。抽象包括數據與過程抽象。繼承性使軟件的可重用性這個問題得到良好處理。多態性使應用程序函數的同名這類問題得到良好解決。
面向對象的編程思想存在很多優越性,其減少了程序開發時間,提升了可靠性,開發出來的程序更有強壯性,維護起來更容易。面向對象編程因為具有較高的可重用性,針對應用程序,能積極運用成熟的類庫,進而使軟件開發效率得以極大提高,所以,軟件界對這種面向對象的編程思想進行提倡運用。日益增多的編程人員認可并運用了面向對象的編程思想,同時結構化編程思想在進行具有比較強功能性的軟件設計里,其指導作用仍然得以發揮。實際上,以上兩種編程思想沒有互相隔離,卻是相互支持、聯系的。在如今的軟件界,進行面向對象程序設計的時候,具有公認的編程公式:其一為對象=算法十數據結構,其二為程序=對象+對象,通過公式,能觀察出以上兩種編程思想的關系及區別。進行面向對象的程序設計時候,仍然不能脫離完成算法的結構化程序設計,其中的結構化程序設計還是編寫對象進行操作的重要所在。
二、AOP編程思想研究
(一)AOP將系統視為關注點
其實它為GOF(Observer Design Pattern)設計模式的一種持續,進行了被調用者與調用者間解耦的強調,給開發人員帶來進行橫切關注點-Crosscutting Concern描述的合理機制,還可以把橫切關注點主動地織入-weaving于面向對象的軟件系統內,確保橫切關注點模塊化得以實現,進行方面-Aspect代碼的合理劃分,橫切關注點顯得極易進行處理。開發人員進行編譯的時候,插入、更改或者除去系統的方面,更可能重用系統的方面。由于開發環境各不相同,關于概念也會有所不同。
(二)針對的問題
AOP通?;谶M行業務處理中的切面實施提取,進行處理的時候,其面對著其中的一個步驟或者哪個環節,以確保整個邏輯中每個部分間低耦合性產生的隔離作用。針對動詞方面,其重視的為橫向的,即為整個邏輯中一個方面或者某個片段,例如:權限以及日志管理,一般情況下,其進行某些軟件系統自身東西的關注。并非面向對象進行業務邏輯的關注。運用有效松散方式,使系統間的耦合度這些問題減少,方面即為它的模塊化單位。
(三)軟件性能
1.代碼擴展性
對于AOP,因為方面模塊并不了解橫切關注點,因此極易進行新方面的增加,并投入新功能。同時,把新的模塊加到系統中的時候,已經存在的方面會自動橫切進入,確保系統容易擴展。
2.代碼冗余度
運用最小的耦合進行各個關注點的有效處理,保證雖然為橫切關注點,還是模塊化。如此實現的系統,它的代碼冗余不大。進行模塊化實現,促使系統的維護與理解更為容易。
3.代碼重用性
AOP將各個方面變成為獨立模塊,在模塊間,其為松散耦合。能使用其它獨立的日志寫入器取代此時的,進而將日志合理地寫入數據庫中,保證與各種日志寫入要求相符。正確實現松散耦合,經常象征著代碼重用性更為良好。
(四)AOP的開發程序
基于面向對象編程-OOP這種方法,AOP才得以改進,其為具有創新性的一種軟件開發方法。一般具有如下的幾個開發程序:
1.方面分解
進行分解,要得出橫切關注點。在這個步驟中,將系統級的橫切關注點與核心模塊級關注點進行合理分離。
2.關注點實現
進行關注點的獨立實現,將各個需求映射成為代碼,編譯器隨后將其翻譯成為一些可執行代碼。能依靠另外的編程范型,把其當作前提,確?;A范型具有的優勢還得以保留。比如:AOP能利用OOP當作基礎范型,直接地將OOP擅長處理普通關注點的優勢引用來。利用如此的實現,一般的獨立關注點能利用OOP技術,其和過程型語言為很多OOP語言的基礎相似。關注點實現因為按照指定過程這一形式產生,能運用C、C++或者Java這些傳統語言。
3.方面的重新組合
在此步驟中,方面集成器進行某個模塊單元的建立,也就是方面,進行重組標準的指定,常把重組過程稱為結合或者織入,運用合適的信息進行最終系統的組建。
AOP實現能夠運用許多方式進行織入的實現,進行源碼至源碼的變換,進行各方面源碼的預處理,織入過的源碼得以出現,再將織入過的源碼傳到編譯器,最終可執行代碼得以生成。運用此方式,基于Java的一個AOP實現,能將很多方面變換為Java源代碼,隨后通過Java編譯器,將其變換為字節碼,還能處于字節碼級別進行織入的執行,實際上,字節碼自身也為一種源碼。同時,對于底層中的執行系統Java虛擬機,還能設計成為對AOP支持。基于Java的AOP實現要是運用此方式,能在虛擬機中,把織入規則載入,隨后就之后載入的類均利用此規則,實際上,其能進行just-in-time方面織入的執行。
三、總結
由于編程實踐的一直開展,編程思想就會產生,產生的各種新編程思想,均對編程實踐進行合理指導,且均使計算機軟件開發的質量與速度得以提升。在當今,AOP實現與語法尚未進行完全規范,其為基于OOP以后的編程思想的一種創新,其能選用OOP當作基礎范型,具有讓人無法抗拒的好處,業界會進行認可、接受,但是還要更深刻地探究其中存在的問題。
參考文獻:
[1]李明.C++程序設計[M].北京:中央廣播電視大學出版社,2008:l96-198
在高等學校的本科教育中,“C語言程序設計”幾乎成了所有專業的必開課程,從計算機科學與技術、軟件工程、網絡工程等相關專業,到電子信息類理工科各專業,乃至理工科院校的所有非計算機專業,有的是專業基礎課,有的是公共必修基礎課,有的是“非計算機專業的計算機基礎課”。只是課程名稍有差異,常見的有“C語言程序設計”、“高級語言程序設計”、“C語言”、“C程序設計”、“結構化程序設計”等。無論叫什么樣的課程名,也無論是哪類專業,其課程的教學要求和教材選用卻無太大差別,只是課時分配差異較大。
從網絡調查的16所不同類型高校的“C語言程序設計”教學大綱看,普遍都包含“通過本課程的學習,使學生了解有關程序設計的基本概念、術語及C語言的特點,掌握C語言基本數據類型、語法規則、程序控制結構、常用的標準庫函數,培養學生的程序設計技能,初步積累編程經驗”的教學基本要求;約百分之八十左右的“C語言程序設計”課程都選用由譚浩強主編、清華大學出版社出版的“C程序設計”作為主教材;課時分配從30~108課時不等,其中80課時以上的多為應用型本科院校的計算機相關專業以及綜合性大學的非計算機專業,理論課時與實驗課時的比例一般為1:1到1:1.2。與此同時,其他專業基礎課(如計算機組成原理、操作系統、數據結構等)的課時一般為54課時,最多不超過72學時。相比之下,“C語言程序設計”所占課時是其他專業基礎課的1.5倍至2倍。
從教學目的看,非計算機專業的“C語言程序設計”課程主要目的是“掌握語法規則和程序結構,具備一定的程序設計能力”,而計算機相關專業的“C語言程序設計”課的教學目的則要分為三個層次,一是使學生全面理解計算機程序設計語言的基本內容和結構;二是通過算法掌握程序設計的基本方法和步驟,并具備一定的程序設計能力;三是為后續課程的算法描述和其他程序設計語言的學習奠定基礎。
二﹑教學誤區
從以上的教學現狀(特別是課時分配)看,長期以來,“C語言程序設計”的課程教學存在“教學內容背離教學要求和教學目的”的誤區,主要表現在教材誤區、講授誤區和考核誤區三個方面。
(一)教材誤區
國內高校的“C語言程序設計”課大多選用譚浩強主編、清華大學出版社出版的“C程序設計”[1]為主教材,目前使用的是2005年7月修訂出版的第三版,教材共363頁,主體內容分為14章,其中,第3章的數據類型與表達式占用30頁,第4章的格式輸入輸出占用12頁,前9章共占用218頁,后5章共占用145頁。占用如此大篇幅的原因是教材中除了介紹相關語法格式外,還增加了相當多“特殊格式”和“特殊情況”的解釋和說明,因此,該教材的最大優點就是“內容詳盡、解釋清晰”。
然而,對于初學者來說,學習計算機程序設計語言就是為了“為計算機描述求解問題的過程”,過于詳細但又遠離現實問題的“特殊格式”和“特殊情況”的解釋,使得學習內容復雜化,增加了程序設計語言學習的難度,誤導了學習者的學習重點,由此也賦予了該教材無法掩飾的缺點,那就是教材編寫的指導思想和教材內容的組織脫離了高校各專業“C語言程序設計”課程的教學目標,過分強調語法細節而忽略了程序設計語言的“正向表達能力”的應用,過分強調“語言的靈活性”而導致教材主體內容的“復雜化”,從而誤導“C語言程序設計”課程的教學內容朝著“重語法學習、輕算法描述”的“語言研究”方向發展。
(二)講授誤區
由于教材內容的“復雜”,課堂講授自然需要較多課時,教學重點當然也放在了“語法研究”上。從網上下載的“C程序設計(第三版)”的配套教學課件以及有關院校的“C語言程序設計”教學課件的內容組織上可以清楚的給出以上判斷?!罢Z法研究”型的課堂講授,更加放大了教材對“C語言程序設計”課程內容的“扭曲”程度,給學生提供了錯誤的程序設計語言學習方法,把簡單問題復雜化,更為嚴重的是,挫傷了學生學習計算機程序設計語言的興趣和積極性,把本應“主動學習”的課程成引入了“被動學習”的歧途,直接導致“懂語法、會做題,但不會編程序”的教學后果。
(三)考核誤區