程序設計的基本結構范文
時間:2023-07-18 17:37:10
導語:如何才能寫好一篇程序設計的基本結構,這就需要搜集整理更多的資料和文獻,歡迎閱讀由公務員之家整理的十篇范文,供你借鑒。
篇1
關鍵詞:C語言;程序設計;循環結構;教學方法
中圖分類號: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
(Department of Computer Science, Chuxiong Normal University, Chuxiong 675000, China)
篇2
【關鍵詞】程序設計 梯形圖 經驗法
由于可編程控制器的控制功能以程序的形式出現,所以程序設計是一個重要環節。梯形圖是可編程序控制器的重要程序設計方法。一般應用程序設計可以分為經驗設計法、邏輯設計法、順序功能圖設計法等。本文以工作臺自動往返循環工作為例主要介紹采用經驗設計法進行梯形圖程序設計。
由于生產過程控制要求的復雜程度不同,可將程序按結構形式分為模塊化程序和基本程序。
基本程序既可以作為獨立程序控制簡單的生產工藝過程,也可以作為組合模塊結構中的單元程序;依據計算機程序的設計思想,基本程序的結構方式只有三種:順序結構、條件分支結構和循環結構。
模塊化程序:把一個總的控制目標程序分成多個具有明確子任務的程序模塊,分別編寫和調試,最后組成一個完整總任務的完整程序。這種方法稱為模塊化程序設計
經驗設計法需要設計者掌握大量的基本程序。這些基本程序例如電動機正反轉聯鎖控、斷開延時和接通延時控制程序、警燈閃爍控制程序等。
我們以工作臺自動往返循環工作來進行說明。
1 設計要求
(1)自動循環工作。
(2)點動控制。
(3)單循環運行,即工作臺前進、后退一次循環后停在原位。
(4)8次循環計數控制。即工作臺前進、后退為一個循環,循環8次后自動停在原位。
2 分析控制要求
(1)工作臺前進與后退是通過電動機正反轉來控制的,所以要用電動機正反轉這一基本程序;
(2)工作臺工作方式有點動控制和自動控制兩種方式,可以采用程序(軟件的方法)實現兩種運行方式的轉換。
(3)工作臺有單循環和多次循環兩種工作狀態,可以采用控制開關來選擇。
(4)多次循環因要限定循環次數,所以選擇計數器來進行控制。
3 分配I/O點
PLC控制系統I/O分配,依據生產流水線從前到后,I/O點數由小到大,盡可能把一個系統、設備或部件的I/O信號集中編制,以利于維護。表1為本例的I/O分配地址表。
4 控制程序設計
4.1 基本控制環節的程序
本控制要求的對象是工作臺,工作方式有前進和后退。電動機正轉時,使工作臺前進,電動機反轉時,使工作臺后退,因此基本控制程序是正反轉控制程序。
4.2 實現自動往返功能的程序設計
工作臺前進過程中撞塊壓合SQ2后,SQ2動作,X6常閉觸點應先斷開Y0線圈,使工作臺停止前進,后X6的常開觸點再接通Y1線圈,使工作臺后退,完成工作臺由前進轉為后退的動作,同理,撞塊壓合SQ1后,工作成由后退轉為前進的動作,因此在圖(1)中加入二個限位開關,如圖(2)所示。
4.3 實現點動控制功能和單循環控制功能程序設計
根據點動的概念可知,如果在上述梯形圖中解除自鎖,就能實現點動控。所以利用開關SA1來選擇點動和自動控制。SA1閉合后實現點動,SA1斷開,實現自動控制。
單循環工作方式是指啟動按鈕按下后,工作臺由原位前進,當撞塊壓合SQ2后由工作臺前進轉為后退,后退到原位后撞塊壓合SQ1后,使工作臺停在原位。如果撞塊壓合SQ1后,則X5常閉觸點斷開,使Y1線圈失電,工作臺停止后退。在X5常開觸點閉合后,只要不使Y0線圈得電,工作臺就不會前進,這樣便實現了單循環控制。如圖(3)所示。
根據上面這個例子,我總結出經驗法設計梯形圖的一般規律:
(1)根據控制要求,設計出基本程序;
(2)逐步補充完善程序;使其能完生滿足控制要求;
(3)設置必要的聯鎖保護程序。
PLC控制系統的程序設計是一個步驟有序的系統工程,要想做到熟練自如,需要反復實踐和練習。設計的每一步,都要依靠平時所積累的程序設計經驗來設計程序。
參考文獻
[1]張夢欣.可編程序控制器及其應用[M].中國勞動社會保障出版社,2006.
篇3
關鍵詞:算法程序 數據結構
隨著世界步入信息化和網絡化,以及計算機的普及,計算機教育隨即也變得異常重要,如何讓中國培養出更多的IT人才,讓中國成為真正意義上的電子信息化與網絡一體化的國家,這也成為我們國家面臨的一項艱巨任務,因此對廣大學生的計算機教育也必須更加重視起來,計算機教育應該逐漸面向大眾化,不斷提高計算機在我國的普及程度,也是我們強國的必經之路。
程序設計教學長期以來一直是中職計算機教學的重點和難點之一,如何學好程序設計成為廣大學生最為關心的問題,如何教好程序設計也成為廣大老師長期不斷探討的問題,現在我已自身的學習經驗和體會淺談一下學習的方法。
實際上如果我們要學好程序設計,算法,數據結構,程序設計方法和語言這四個方面是一個程序設計人員必備的知識,很多人在學習程序設計的過程中很茫然,不知道怎么進行或者說不知道怎么去寫語句,其實我們出現的問題無非就是沒掌握上面四個必備的知識,現在我的提議是以算法,數據結構,程序設計方法和語言這四個方面板塊為基礎,分塊教學,各個擊破,這樣也就能夠很好的學好程序設計了。
算法:算法可以說是程序的靈魂,廣義地說,算法是為解決一個問題而采取的方法和步驟。設計出高質量的算法,并研究算法所耗費的計算資源與問題規模之間的函數關系。算法設計與算法分析是不可分割的一個整體。按照算法所處理的對象進行分類,算法設計與分析主要有數值算法和非數值算法兩大領域。按照計算方式進行分類,則可分為串行算法和并行算法。算法設計的任務是對各類具體的問題設計高質量的算法,以及研究設計算法的一般規律和方法。
數據結構:數據結構是指相互之間存在著一種或多種關系的數據元素的集合和該集合中數據元素之間的關系組成。在許多類型的程序的設計中,數據結構的選擇是一個基本的設計考慮因素。許多大型系統的構造經驗表明,系統實現的困難程度和系統構造的質量都嚴重的依賴于是否選擇了最優的數據結構。許多時候,確定了數據結構后,算法就容易得到了。有些時候事情也會反過來,我們根據特定算法來選擇數據結構與之適應。不論哪種情況,選擇合適的數據結構都是非常重要的。選擇了數據結構,算法也隨之確定,是數據而不是算法是系統構造的關鍵因素。這種洞見導致了許多種軟件設計方法和程序設計語言的出現,面向對象的程序設計語言就是其中之一。
程序設計方法: 程序設計方法學是討論程序的性質以及程序設計的理論和方法的一門學科[1], 是研究和構造程序的過程的學問,是研究關于問題的分析,環境的模擬,概念的獲取,需求定義的描述, 以及把這種描述變換細化和編碼成機器可以接受的表示的一般的方法。
用以指導程序設計各階段工作的原理和原則,以及依此提出的設計技術。有時也指研究這些原理、原則和技術的學科。程序設計方法學的目標是能設計出可靠、易讀而且代價合理的程序。程序設計方法學包括程序理論、研制技術、支援環境、工程規范和自動程序設計等課題,使程序設計更加科學化和工程化。其基本內容是:結構程序設計;程序理論在程序設計技術中的應用,以及規格說明和變換技術。程序理論與程序設計方法學的發展密切相關,它豐富了程序人員的思維方法,促進了程序設計技術的發展。其研究的主要內容為結構化程序設計,數據抽象與模塊化程序設計,程序正確性證明,面向對象的程序設計方法等。
語言:程序設計語言,用于書寫計算機程序的語言。語言的基礎是一組記號和一組規則。根據規則由記號構成的記號串的總體就是語言。在程序設計語言中,這些記號串就是程序。程序設計語言有3個方面的因素,即語法、語義和語用。語法表示程序的結構或形式,亦即表示構成語言的各個記號之間的組合規律,但不涉及這些記號的特定含義,也不涉及使用者。程序設計語言是人們指揮計算機的工具。它是一種工程語言,由字,詞,語法規則構成的指令系統,高級語言提供了常用的數據描述核對數據操作規則的描述,程序設計就是根據特定的問題,使用某種程序設計語言,設計出計算機執行的指令序列。發展趨勢
程序設計語言是軟件的重要方面。它的發展趨勢是模塊化、簡明性和形式化。
①模塊化。不僅語言具有模塊成分,程序由模塊組成,而且語言本身的結構也是模塊化的。
②簡明性。涉及的基本概念不多,成分簡單,結構清晰,易學易用。
篇4
【關鍵詞】程序設計課程 計算思維
學習程序設計,要注重計算思維的滲透與養成。計算思維是基于數與形的邏輯關系,來探討問題求解的過程。在程序設計課程教學中,如何從教學方法創新上,來強調計算思維,來引導學生從計算思維中來洞曉和理解程序設計的真諦。為此,本文將結合C語言教學實際,通過引入Raptor流程可視化軟件,來創新程序設計課程教學模式,激發學生的計算思維,提升教學實效。
1 程序設計課程對計算思維的體現
在程序設計課程教學實踐中,語法規則是體現程序設計思想與方法的具體內容,也是引導學生運用程序設計來解決問題的有效途徑。但對于學生而言,程序語法在后續的學習中,因抽象性過強而容易陷入迷惑。為此,利用“Raptor”可視化程序設計流程軟件,將程序設計的“思想”與“方法”導入到流程圖中,引導學生從問題的求解思路砝斫庥鋟ǎ幫助學生從中激發學習熱情,解決設計難題。突出計算思維的滲透,主要從三方面來體現。一是強調學生對程序設計基本知識的掌握,特別是對于相對繁瑣的程序,從基本概念的掌握學習中,來理解程序設計的思想與方法,學會調試程序;二是注重程序對問題的求解能力,程序設計的目標在于解決問題,而問題的呈現是以抽象化程序代碼形式來表現,因此,要注重對數學模型、算法的優化學習;三是注重創新能力的培養,特別是突出計算思維能力,要從算法思維多樣化上來引導學生多實踐,多感悟。
2 Raptor可視化軟件與程序設計計算思維的協同運用
2.1 明確Raptor的流程圖特色
Raptor作為可視化流程圖工具,其特色表現在三點。一是對于各類圖形符號具有可執行的流程圖,可以實現對程序設計語法的直觀呈現。二是在操作上簡便、快捷,特別是通過拖拽方式對不同圖形符號進行位置優化,以形成完整的流程圖;三是在設計思維上便于掌握和理解。另外,Raptor還能夠提供執行步驟計算與統計,為算法分析、優化提供參考。
2.2 Raptor在算法設計中的應用
計算思維在程序設計中的運用,要遵循“發現問題、分析問題、尋求解決思路、優化設計方案”等流程,并從中來強化計算思維的養成。根據《大學計算機基礎課程教學基本要求》,在引入程序設計教學與Raptor流程軟件時,要遵循教學內容的漸進性,注重計算思維的連貫性,特別是對于新生,由于對程序設計學習好奇心強,要在案例選擇上貼近學生實際,便于學生從中掌握程序設計的算法思路。以“猜數游戲”為例,對于20以內的整數,計算機隨機給出,讓學生進行猜想,正確顯示“Right”,錯誤顯示“Wrong”。在程序設計的算法分析上,一要明確猜數的功能,利用Random隨機函數功能來優化程序結構,便于學生操作;二要對所給出的數字進行判斷,利用Raptor嵌入式選擇結構來判定是大還是小;三要對程序的交互設計,利用循環結構來設計程序的連貫性,直到猜出正確數字為止;四要進行“非數字符號”判斷及處理;五要對猜測次數進行限定,利用Raptor嵌套循環結構來實現最大次數限定;六要對猜測過程數據進行存儲,利用數組知識來完成;七要對猜測的數字進行二分處理,利用二分查找方法來完成。
當然,在選擇程序設計任務時,結合學生的程序認知能力和水平,對程序設計實踐要進行層次劃分,讓學生結合自我能力來完成不同的設計題目。如雞兔同籠問題、判定閏年的算法,100以內的奇偶數之和,水仙花數、出售金魚等算法題,還有一些難度高的如抓肇事司機,打印等腰三角形,字母出現頻率統計等。通過對不同算法程序設計實踐知識的運用,讓學生從問題的抽象思維到程序設計的基本流程中,在倡導多樣化算法思維實踐與鍛煉中,實現對不同問題的不同理解與運用,來分析不同解法的優缺點,來不斷改進和完善程序設計。
2.3 注重教學方法的創新
程序設計課程教學方法的運用,與學生計算思維的培養是相關的,對于教學法的創新,需要從課堂知識講授、動手設計程序、課下教學輔導等方面來綜合。借助于Raptor可視化設計環境,其支持Novice、Intermedia和Object Oriented三種模式,分別為初級程序設計、中級程序設計和面向UML(統一建模語言)對象的程序設計,可以實現多數基本程序設計與算法設計的編程需要。為了對Raptor進行教學方法的創新與驗證,以1000以內的完全數算法設計為例,該程序設計基本上分為9個步驟。如第一步為Loop循環程序,將n從2到1000進行調用,并進行判斷是否大于1000;第二步當n小于1000時,將s作為因子的和;第三步以變量j進行Loop循環設計,當j從2到n/2時,進行取值判定;……如此以來,對于本算法的程序設計,在系統執行與運算上,需要進行百萬次運算比較,增加了運算成本。通過對本算法的分析,求解1000以內的完全數具有明顯的步驟顯示性,可以將之應有到Raptor流程圖設計中,來分析其算法的復雜度,進而可以估算出本程序的運算次數達到1124955.5次。在此基礎上,通過引入歐拉完全數獲得公式,當滿足條件2P-1時判定為質數,則(2P-1)×2P-1的結果即是完全數。對上述算法程序設計進行優化,可以在相同的數據范圍內,只需要執行252次算法表達式,即可得到相同的結果,而與之前的算法相比,其計算效率提升近4000倍。由此可見,對于一般的程序設計來說,其復雜性可以通過Raptor流程圖設計進行檢驗和分析,并從計算思維上利用可視化軟件來實現改進和優化,在這個過程中,學生可以從算法復雜性估算、驗證和優化中來激活計算思維,來提升計算思維能力。
3 結語
利用Raptor可視化程序設計工具與程序設計課程的融合,便于將抽象的程序設計教學進行可視化呈現,突出了教學直觀性,引導學生辨析程序設計的優缺點,克服程序設計的迷惑與恐懼,增強了學生的學習興趣。Raptor可視化工具的運用,在激發學生程序設計計算思維上發揮了積極作用,一方面利用流程圖來模擬程序設計,另一方面從問題的提出、求解、探討、設計中來實現編程知識的內化,強調學生計算思維的培養,提升學生的編程水平。
參考文獻
[1]劉瓊,史諾,Tran Van Cuong.基于計算思維視角的程序設計教學改革研究[J].自動化與儀器儀表,2015(12).
[2]楊飛,陳浩強,劉方.基于計算思維的醫學計算機基礎教學探索[J].中國繼續醫學教育,2016(24).
篇5
1)計算機程序設計類課程體系設置不夠合理
目前,不少高校計算機專業程序設計類課程的設置,大一新生一進校,第一學期就開設C語言程序設計,或者C++程序設計,其理由是認為學生在中學階段進行過信息技術教育和簡單的程序設計基礎訓練。而結果呢,由于中學階段的信息技術教育在很多地區特別是農村地區得不到重視,或者沒有全面的開展實施,學生剛入大學時對計算機的認識和理解不夠深入,就進入了C語言或者C++語言程序設計的學習,其教學效果很不理想。因此,學生對后續課程如《數據結構》、《Java程序設計》等課程的學習也將受到很大影響,顯得很吃力,而且學習效果也比較差。
2)教育理念和教學方式不夠恰當
程序設計類課程的教學,如C語言程序設計或者C++程序設計,很多教師注重基本概念和語言的語法規則的教學,在相應的課程實驗中也只是對基本語法的訓練,而忽略了對學生分析問題的方法、思想的培養,學生的創新能力不強。因此,學生在學完一門程序設計類課程后,往往感覺到能閱讀程序,能讀懂程序,能理解別人寫的程序,可讓自己動手來編寫一個稍微復雜一點的程序,卻顯得很茫然,無從下手。
3)教學內容的組織和安排不夠符合學生的認知規律
學生對程序設計類課程的學習,很大一部分同學是:翻開教材,課本中的程序個個都會,能看明白;閉上書,自己來重寫一下這些程序,錯誤百出。其原因還是由于教師在教學過程中沒有把握住學生的認知規律,學生對課程知識理解不夠牢固[2-3]。如《C語言程序設計》課程的教學過程中,指針這一部分知識是安排在教學內容的靠后章節講授,學時短,應用少,但指針卻是這門課程的重點,后續課程中的應用很多,學生對這一知識掌握不好,勢必影響后續《數據結構》等課程的學習效果。
4)教材建設缺乏針對性,系統性
目前,很多普通高校計算機專業都還沒有編寫適合自己學生的教材,基本上都是使用高校計算機專業規劃系列教材,而程序設計類課程的教材很多,每本教材都有作者自己的內容安排和章節設計方案,而且教材的選用也不固定,不同的授課教師常會選用不同的教材,這樣往往會有在程序設計類課程群的教材使用中,出現知識點和講授內容的重復、教材的難度與學生的知識水平不符等問題,教材建設針對性和系統性差。
2計算機程序設計類課程教學改革方法及措施
1)調整計算機程序設計類課程體系
針對在現行的課程體系中,學生由于C語言或者C++程序設計的學習效果不理想,而導致對后續課程的學習受到很大的影響,應將計算機專業程序設計類課程教學體系和課程設置進行調整。在大一第一學期開設《計算機導論》課程,目的是讓學生對計算機學科和計算機領域的研究內容有初步的認識,了解并掌握如數據在計算機中的存儲與表示、計算機工作原理、計算機基礎知識,計算機硬件系統,計算機軟件系統,多媒體技術基礎,通信與網絡基礎等方面的知識。[4]在此基礎之上,大一第二學期開設《程序設計基礎》課程,講授內容可以是C語言程序設計或C++程序設計,目的是進行程序邏輯訓練,讓學生掌握程序的基本結構和程序調試基本技能。在學生掌握了基本的程序設計基礎之后,再開設《高級程序設計技術》課程,重在培養學生程序設計方法和思想,其教學內容是程序設計中的一些高級處理技術,如數據類型、指針的高級應用,文件的操作,圖形界面與動畫設計,鍵盤與鼠標操作,以及一些典型算法應用。在學生掌握了程序設計能力和程序設計思想方法基礎上,再先后開設《數據結構》、《Java程序設計》課程。《數據結構》課程是培養學生根據實際問題的要求有效地組織、存儲、處理數據的能力;《Java程序設計》貫穿面向對象程序設計新理念,讓學生掌握面向對象程序設計思想和技術。在高年級,針對不同的專業方向,還可開設VC++、C#、LINX等程序設計類選修課程,提高學生的編程水平和實踐能力,以滿足社會對軟件人才的不同需求。這樣,就形成了“基礎訓練+方法培養+提高能力+拓展層面+實踐應用”的程序設計教學新模式和程序設計類課程新體系。
2)改革教育理念和教育教學方式
程序設計類課程的課堂理論教學中,采用案例教學法可以取得較好的教學效果,可將一個較復雜的項目分解到各章節去講授介紹。如在《程序設計基礎》課程教學過程中,我們使用了一個學生成績管理程序項目案例,在講授數組這一部分知識時,就可以將這個案例引入進來,介紹為什么要使用數組來存儲多個學生的成績,要對學生成績排序應該怎么辦;當課程進行到函數這一章時,引入了案例中的模塊設計思路,介紹為什么要將項目分解為成績錄入、成績排序、成績查找、成績統計等多個模塊,模塊之間如何去調用;當課程繼續進行到結構體這一章時,讓學生分析理解案例中,學生的信息不僅包含成績,還包含姓名、學號時應該怎樣處理;講授到文件這一章時,讓學生理解要將案例中的學生成績等信息存儲到一個文件中去,怎樣去實現。這樣,通過這一個完整的案例貫穿到整個課程的學習,不僅能使學生掌握課程中的基本知識,也能讓學生直觀的感受到一個復雜項目的設計過程。
3)改善教學內容的組織和安排
在程序設計類課程的教學過程中,我們將教學內容進行了調整和重新組織。在《程序設計基礎》課程的教學過程中,將指針這一部分知識分散到各個章節去講授,在講到變量定義時,就引入地址和指針的概念,講到數組和函數部分時,將指針的應用也同時在案例中進行講授,這樣,同學們也很容易接受和消化理解。在《高級程序設計技術》課程教學中,不講授語言的基本知識,只講授指針、文件、圖形界面、動畫、鍵盤、鼠標等的高級應用操作和設計。《數據結構》課程中,講授各種抽象數據類型的定義,及相應的算法設計。在《Java程序設計》課程教學中,重在培養學生面向對象程序設計思想和編程技術,對教材中的基礎知識部分如常量、變量、數據類型、數組等進行略講或不講,只是在應用中進行簡單介紹該注意的問題,這樣,就可以將更多地學時放在對學生面向對象編程思想的培養上。
4)加強課程和教材建設
在程序設計類課程群教材建設方面,應該有區別的選取具有系統性的、適合自己學生水平的高質量教材,或者課程群相關教師合作編寫出版教材或講義,這不僅使課程群中的課程教學內容具有系統性,也適合自己學生的認知水平,具有較強的針對性,同時,授課教師也能熟練駕馭教材和授課內容。近年來,我校計算機專業程序設計類課程群教師編寫出版了《程序設計基礎》、《數據結構》教材和相配套的習題冊,教學效果有了明顯提高。
3結束語
篇6
關鍵詞 程序設計教學 C語言 C++ Visual C++.NET
1 引言
筆者多年來一直在高校從事計算機科學技術的教學和研究工作,在長期的實踐中深刻認識到,計算機程序設計是計算機專業的基礎課,熟練掌握計算機程序設計也是學生將來從事計算機技術應用研究所應具備的基本素質。然而,程序設計技術水平的提高,僅僅靠一兩門程序設計課程是不夠的。只有經歷了計算模型與算法理論、若干語言(含微程序設計和匯編語言程序設計)的程序設計、程序設計方法學、程序理論與軟件開發方法學、軟件工程以及其他相關課程的學習以后,并經過大量實踐,才能真正大幅度、整體性地提高程序設計水平。我們在這里所討論的面向對象程序設計,是在學習了某種高級語言(如:C語言或Pascal語言)之后所要學習的一門課程。為了提高面向對象程序設計的教學水平和培養學生的程序設計能力,既要考慮計算機軟件設計發展的方向和需要,又要重視采用科學、合理和先進的教學模式,并實施相應的教學內容和教學方法。下面針對這些問題談談筆者的看法。
2 充分認識面向對象程序設計的特點
隨著程序設計學科的發展,程序設計思想經歷了從簡單的順序計算到結構化的程序設計,再到面向對象的程序設計的發展過程,形成了一整套的思想理論和設計方法。目前看來,面向對象程序設計方法比較接近人們表達事物和解決問題的思維方法,其特點如下。
(1)具有靜態屬性和動態行為的對象與客觀世界的實體比較相象,面向對象的程序能夠比較自然地模擬客觀世界,從而使得解空間與問題空間在結構上盡可能一致。
(2)應用面向對象技術來分析、設計和實現軟件系統的過程與人們認識客觀世界、解決實際問題的過程比較一致。
(3)對象的封裝性,降低了程序的復雜性;對象的繼承性,增加了程序設計的可重復使用性;對象的多樣性,增強了程序設計的靈活性。由此可以明顯提高軟件開發與維護的效率,降低軟件的總成本。
應用這些特點,人們在程序設計時首先要考慮系統有哪些需要處理的“數據”或者“對象”,進一步分析這些對象包含了哪些信息,以及處理這些信息所需要的方法。也就是說,找出對象、正確地描述對象、分析對象與對象之間的關系以及采用計算機語言來構建系統等工作,這是面向對象程序的分析與設計的方法。
近年來,面向對象的技術越來越受到人們的重視,對它的應用和研究遍及計算機軟件和硬件的各個領域,國內高校普遍開設了面向對象程序設計之類的課程。
3 明確選擇屬于主流方向的程序設計語言
面向對象程序設計語言很多,在IT行業中最為流行的如:C++、Java和Delphi等語言,而我們的教學中選擇了C++,其理由如下。
(1)C語言成為程序設計入門的主導語言。由于C語言在當今系統軟件和部分應用軟件的開發中具有實用性強的特點,又與硬件和程序設計環境底層的聯系緊密,所以當學生具備了一定的數學基礎和計算機操作實驗基礎后,首先認可在某種計算模型(如隨機存儲計算模型)和軟件技術(如編譯技術)的支持下,通過C語言的各種基本成分及其功能的了解,學習如何組合各種語言成分來編制完成某項計算的程序,然后完成對某些計算方法和算法的具體實現,從中體會計算機在處理大量計算問題時如何從過程的角度完成具體計算,從而為學習其他計算機基礎課程打好基礎。
(2)C++與C語言有不可分割的親情關系。C++是在C語言的基礎上演變而來的一種程序設計語言,它不是簡單地對C語言作了某些改進,而是在C語言成功的基礎上進行了一場革命。C++語言的創建初衷是“a better C”,但是這并不意味著C++中類似C語言的全局變量和函數所采用的編譯及連接方式與C語言完全相同。作為一種欲與C兼容的語言,C++保留了一部分過程式語言的特點,因而它可以定義為不屬于任何類的全局變量和函數。但是,C++畢竟是一種面向對象的程序設計語言,為了支持函數的重載,C++對全局函數的處理方式與C有明顯的不同。在C++教學中,重點介紹有關面向對象的基本概念、基本方法和基本技術,重點介紹兩種語言之間的不同之處,從而實現了程序設計思想、方法和技術從面向過程平穩過渡到變為面向對象,減小了C++的學習難度。
(3)C++可以很容易延伸到其他語言。與C++接近的有Java語言和C#(C Sharp)語言,它們的基本語句大致相同,其功能主要是開發B/S結構的分布式系統。學習這些語言的時候,在C++語言的基礎上,從語言理論(只引用結論而不展開論述)和語言比較學的角度出發,放棄語言的共性,重點學習對應語言的個性,這樣達到事半功倍的效果。同時引出由于程序設計方法和技術的發展以及高級語言進一步發展帶來的需要在程序設計語言中解決的問題,如組件、網頁以及通信等應用方面的設計,向學生適當展示高級語言與程序設計廣闊的天地,為后續相關課程埋下伏筆。
4 注重提高面向對象的程序設計水平
在引導學生從面向過程程序設計到面向對象程序設計的轉變過程中,對于面向對象的一些基本概念(如類、對象、封裝、繼承和多態),通過同現實生活的事物相對比,學生還是很容易理解的。但是,如何將這些概念應用到面向對象程序設計中,剛開始對于學生來說還是有一定的難度。為了克服這個難題,我們在C++語言的教學中注重了以下幾方面內容。
(1)從程序設計的角度理解面向對象的基本概念。例如對象的封裝性,我們可以認為是一種把代碼和代碼所操作的數據捆綁在一起,使這兩者不受外界干擾和誤用的機制。.封裝可被理解為是一種用做保護的包裝器,以防止代碼和數據被包裝器外部所定義的其他代碼任意訪問。對包裝器內部代碼與數據的訪問通過一個明確定義的接口來控制。封裝代碼的好處是每個人都知道怎樣訪問代碼,而無需考慮實現細節就能直接使用它,同時不用擔心不可預料的副作用。在面向對象的程序設計中,最基本的封裝單元是類,一個類定義了由一組對象所共享的行為(數據和代碼)。一個類的每個對象均包含它所定義的結構與行為,這些對象就好像是一個模子鑄造出來的一樣,所以對象也叫做類的實例。對于類的封裝程度,也是有選擇的。類提供關鍵字public、protected 和private,用于聲明哪些數據和函數是公有的、受保護的或者是私有的,用以控制類的封裝程度,公有的數據和函數公開必須要讓外界知道的內容,而隱藏的是私有的一切內容。對于對象的繼承性,是指一個對象從另一個對象中獲得屬性的過程,它支持按層次分類的概念。如果不使用層次的概念,每個對象需要明確定義各自的全部特征。通過層次分類方式,一個對象只需要在它的類中定義屬于它的個性,然后從父類中繼承它的共性。因此,正是由于繼承機制,才使得一個對象可以成為一個通用類的一個特定實例。當然,類的繼承方式,C++提供了公有和私有的兩種選擇。
(2)培養面向對象技術分析的抽象思維。抽象是程序設計的基本要素,程序設計者通過抽象描述來實現軟件系統。抽象描述的有效方法是使用層次式的分類特性,這種方法允許用戶根據物理含義分解一個復雜的系統,把它劃分成更容易實現的塊。例如,一個計算機系統是一個獨立的對象,而在計算機系統內部由幾個子系統組成:顯示器、鍵盤、硬盤驅動器、DVD-ROM、軟盤、音響等,這些子系統每個又由專門的部件組成。在程序設計中,其中抽象是自頂向下地逐步求精和模塊化。自頂向下地逐步求精是指首先要對所設計的系統有一個全面的理解,其次從頂層開始連續地逐層向下分解,直到系統的所有模塊都被分解為一條條的詳細指令時為止。模塊化是指把一個大的程序按照一定的原則劃分為若干個相對獨立但又相互關聯的實體,這些實體就是我們所面向的對象,它們用類來描述定義。
(3)訓練面向對象設計的邏輯思維。程序設計的過程也就是對學生的思維進行訓練的過程。在許多常規學科的日常教學中我們不難發現這樣一個現象,不少學生的思維常常處于混亂的狀態。寫起文章來前言不搭后語,令人不知所云;解起數學題來步驟混亂,搞不清因果關系。這些都是缺乏邏輯思維訓練的結果。程序設計的訓練不僅可以讓學生養成良好的程序設計習慣,而且可以有效地培養學生思維的條理性和邏輯性。
(4)幫助學生樹立系統工程觀點。在計算機行業中,軟件的設計已經用工程的觀念來進行管理。軟件設計不再被認為是手工作坊里的個體勞動,而是被當作一項系統工程。軟件工程的復雜程度不低于甚至高于諸如建筑工程等其他行業的工程。隨著社會信息化進程的不斷加速,計算機應用走進各行各業是大勢所趨,社會需要大量的計算機高等人才,從而對我們的計算機教育提出了更高要求。我們知道,程序設計是計算機專業的基礎,應該從一開始使學生養成一個好習慣,樹立正確的軟件工程觀點。這樣做不僅可以為學生將來從事計算機應用打下良好的基礎,而且有利于提高學生統籌全局、協調關系的基本能力。
5 大力強化面向對象的可視化程序設計方法
目前,程序設計的觀念發生了顯著變化,可視化(Visual)技術廣泛用于各種程序設計過程,就拿C++來說,就有C++ Builder和Visual C++不同的可視化程序設計語言。這些可視化語言,它們以其圖形化的編程方式將面向對象技術的特性完美地體現出來,使得開發軟件這一原本枯燥、難以理解的工作變得輕松快捷。作為專業人員不懂得可視化編程技術將無法在競爭激烈的計算機行業中立足,作為計算機學科的教師不傳授可視化編程技術將難以滿足學生強烈的求知欲望。
從整個IT產業的軟件市場來講,如果要開發高性能的Windows或萬維網(WWW)應用程序,Visual C++是一種效率較高的開發工具,幾乎所有世界級的軟件都是使用Visual C++開發系統完成的。在2002年初,微軟公司又推出了Visual C++的最新版本――Visual C++.NET,它繼承了以往Visual C++各版本的優點,增加了許多新的特性,使得開發的能力更強、開發的效率更高,深受業內人士青睞,所以我們選擇了Visual C++.NET作為可視化程序設計語言。
在學習掌握C++語言的基礎上,講授Visual C++.NET需要重點突出以下內容。
(1)MFC(Microsoft Foundation Class,微軟基本類庫)。MFC是微軟公司為Windows程序員提供的一個面向對象的Windows編程接口,使用它進行Windows應用程序開發具有很大的優越性。首先,MFC提供了一個標準化的結構,開發人員不必從頭設計創建和管理一個標準Windows應用程序所需的程序,而是“站在巨人肩膀上”,充分利用Microsoft開發人員多年開發Windows程序的經驗,并可以將這些經驗融入到用戶自己開發的應用程序中去。我們知道,雖然程序設計者要編寫的程序在功能上是千差萬別的,但從本質上來講,都可以歸納為用戶交互界面的設計、輸入輸出文件的操作、多媒體技術的應用以及數據庫的訪問等一些最常用的技術。這一點正是微軟提供MFC類庫的最重要原因,在這個類庫中包含了一百多個程序開發過程中最常用到的類。在進行程序設計的時候,如果類庫中的某個類具有我們所需要的功能,這時我們只要簡單地引用該類產生對應對象,然后通過對象調用有關方法就可以了。我們還可以利用面向對象技術中很重要的“繼承”方法從類庫中的已有類派生出我們自己的類,該類繼承了父類的特性和功能,實現了代碼重用,并在此基礎上還可以根據自己需要加上所需的特性和方法,從而可以快速設計出一個更專業的、功能更強大的類。
(2)消息處理機制。Windows操作系統環境下運行的交互式應用程序,不論采用那一種開發工具,它都具有以消息為基礎、由事件驅動的運行機制。事件是外部強加于應用程序的操作動作,它們有可能來自系統,也有可能來自用戶。操作系統將捕捉到的事件,按事件的類型和來源采用相應的數據結構描述事件,這種形式稱為消息。操作系統將事件翻譯成消息之后,接著將消息分發到消息隊列中,等待應用程序索取并處理。在Visual C++.NET中,消息可分為窗口消息、命令消息、控件消息和交互對象更新消息,這些不同類型的消息各自都有對應的處理方式。熟悉消息的處理方式和靈活應用消息,對于學生設計交互式應用程序至關重要,因為設計的大多數時間是充分利用各種消息,編寫它們對應的處理函數。如果忽視了消息處理機制內容,學生編程序或者無從下手,或者功能簡單。
(3)主要應用程序類型的程序結構。Visual C++.NET提供了良好的開發應用程序向導,在向導的指引下,可以自動生成單文檔、多文檔、對話框和多頂級文檔等四種標準類型的應用程序結構,對應結構都是由MFC中的基類派生的類組成的。在教學過程中,深入剖析這四種應用程序結構,有助于提高學生的軟件開發能力。例如多文檔應用程序結構目前使用越來越普遍,人們熟悉的Microsoft公司的Office系列產品以及Visual系列產品都是典型的多文檔應用程序。這種多文檔界面具有多窗口的特點,因而人們可以在一個程序中使用多個子窗口來實現不同數據的瀏覽查看。一般情況下,這四種結構可以滿足絕大多數用戶的要求,但有時用戶也可以通過重載一些函數來修改其缺省的風格,從而在此結構基礎上設計加工具有自己個性的應用程序。
(4)對話框的數據交換機制。對話框是應用程序的主要交互方式,它作為一種容器,包含了用于輸入輸出信息和控制操作的控件,并且大多數控件都有對應的內存變量。Visual C++.NET對于實現控件和變量之間的數據交換有自己的一套獨特機制,熟悉這種機制有助于學生深刻理解輸入輸出數據的來龍去脈。
以上內容如果讓學生自學是有一定的難度,所以希望老師重點講解這些內容,以便學生自學繪圖、數據庫操作和網絡編程等有關專題技術。
6 結束語
目前,計算機程序設計方法在不斷地更新,當我們講授面向對象的程序設計方法時,面向組件和面向服務的新方法就已經產生了。在這種情況下,是不是說面向對象的程序設計方法過時?我認為并不見得過時。就像我們應用面向對象的設計方法時還得應用面向過程的設計方法(如設計消息處理函數)一樣,面向組件和面向服務的新方法是在面向對象的基礎上發展產生的,服務是組件的容器,組件是對象的容器,最基本的內核還是對象,只不過從軟件體系結構的角度來講,服務和組件相對于對象來說,是形成體系結構的更大力度的結構元素。所以說,講授好面向對象程序設計方法,是為將來學習面向組件和面向服務的程序設計方法打基礎。
參考文獻
[1] 譚浩強.C程序設計(第二版)[M].清華大學出版社,2001,8.
[2] 鄭莉,董淵.C++語言程序設計(第二版)[M].清華大學出版社,2002,1.
篇7
關鍵字:“提問-引導-探究性” 程序設計 循環語句 網絡教學資源 程序優化
一 引言
(一)問題的提出
由于學生剛接觸程序設計,很難把數學知識融入到循環結構的運用中,通常在學習中對書本上提供的程序容易理解,但只要把條件和要求略加變更或者在獨立解決一些實際問題,這時學生表現為應變能力低,編程實現也就有點困難。
(二)解決問題的思路
思維是活躍的,程序是變化的,程序設計不能僵化于一種講授模式,重在“啟發引導”,就是呈現層次分明的“提問”內容,再結合問題的具體實際,因勢利導,最終“引導”學生自己來“探究”完成任務。實踐證明,充分運用“提問-引導-探究性”教學模式來加強程序設計教學中的引導,是提高程序設計能力與解決實際問題的應變能力的有效途徑。
二 實踐
在課程改革和信息技術與學科課堂整合的今天,教師是教學資源的提供者、研究探索的引導者。除了引導式的展示不同階段學生思考的不同問題、提供必要的多媒體信息資源之外,還要指導學生依托信息技術所提供的豐富網絡教學資源進行研究、討論和發表見解的,拓展式、開放性的學習。在循環結構的教學中,我充分運用“提問-引導-探究性”的教學模式,循序漸進地提出層次性的問題,從而實現引導變通,這時,師生一起進入"聊天室"進行知識問答、交流談心、專題探討等活動(這種聊天式的討論本身就是一種學習活動)。學生在交流探討的過程中發展思維,學習新知,培養技能,提高漢字輸入速度。具體實施如下:
(一)改變語句中的變量,加強語句的理解與應用
在程序設計的初始階段,學生對某些語句的功能還不甚了解的實際,求和求積等基本問題入手,在及時糾正初編程序時所出現的語法錯誤和邏輯錯誤的基礎上,引導對已編程序的某些語句或語句中的某些變量作力所能及的變通,以加強對語句的理解與應用的基本功。
呈現“求S=1+2+…+50”的例子:
Program cbh1;
var
t,s:integer;
Begin
s:=0;
for t:=1 to 50 do
s:=s+t;
writeln('S=',s);
readln
End.
要求學生關注以下三個問題:
1、循環中的循環變量是什么,其初值、終值分別為多少?
2、放累加和的變量是什么?每次的累加項是什么?
3、請注意累加項和累加和的值是如何變化的。
學生上機調試、分組討論、結合網絡資源,師生問答等方式來完成。學生解答這三個問題的過程,其實是對所學的變量、循環等概念的進一步理解、說明和歸納的思維過程。但并不意味著學生對程序的每個語句的功能清楚了。為了加深對賦值語句和循環語句的執行過程的理解,在這一簡單程序基礎上可引導學生做以下變化練習:
1、S =1+1/2+1/3+……+1/50
2、S =20 +21 +22 +……+210
3、S =1×2+2×3+3×4+……+99×100
4、S =10!=10*9*8*……*2*1
這種一題多變,一例多用的練習使學生從單純的模仿階段,通過自己的觀察、對比、聯系和想象,過渡到獨立應用所學的概念和規則,靈活地、舉一反三地、獨創性解決問題,鍛煉了學生思維能力,使其在思維的靈活性、批判性、深刻性、創新性方面都有所提高。通過以上一系列角度不同的變通,學生對每一個語句的認識深刻了,對語句中每一個變量的確定謹慎了。
引導對語句變量的改變,必須目的明確,同時,變化還要注意控制難度,先易后難,逐步深入,把引導與示范,引導與評價,引導與糾錯有機結合起來。
(二)采用不同的程序設計方法,進一步認識語句與程序結構
循環結構的理解與運用是程序設計的基礎,因此在學完循環基本結構的三種語句(for/repeat……until/while)后,為了加深對三種語句的理解,做到靈活應用,在處理程序設計時引導學生采用不同的方法進行設計,加強橫向聯系,啟發學生自己進行總結,達到理想的教學效果。
呈現 “N!=1*2*3*……*10”例子:
先采用for語句設計發如下:
Program cbh2;
var
i,n:longint;
Begin
n:=1;
for i:=1 to 10do
n:=n*i;
witeln(n,'!=',n);
readln
End.
提出使用其它兩種循環結構應該怎樣設計?
學生經過探究、分組討論、聊天室交流、程序調試、師生總結如下程序:
Program cbh2_1;
var
i,n:longint;
Begin
n:=1;i:=1;
repeat
n:=n*i;
i:=i+1;
until i>10;
writeln(n,'!=',n);
readln;
End.
Program cbh2_2;
var
i,n:longint;
Begin
n:=1;i:=1;
while i
begin
n:=n*i;
i:=i+1;
end;
writeln(n,'!=',n);
readln;
End.
然后引導學生對三個程序進行比較,得出決定循環終止的條件是布爾表達式,同時得出不同循環結構的布爾表達式關系。
又呈現“求出下式中n的最大值:s=12+22+32……+n2
先向學生提問:用什么循環語句來設計程序?
通過討論,學生自己得出結論:
1、用for語句無法設計;
2、只能使用repeat……until與while兩種循環設計;
3、同時再次對repeat……until和while 兩種循環中的布爾表達式之間的關系有進一步的認識;
正確的程序如下:
Program cbh3_1;
var
n,s:integer;
Begin
s:=0;n:=1;
repeat
s:=s+n*n;
n:=n+1;
until s>=500;
n:=n-2;
writeln('n=',n);
readln;
End.
Program cbh3_2;
var
n,s:integer;
Begin
s:=0;n:=1;
while s
begin
s:=s+n*n;
n:=n+2;
end;
n:=n-1;
writeln('n=',n);
readln;
End.
最后小組得出結論:三種語句實現循環結構,即for語句,while語句和repeat……until語句, 對于能確定循環次數且可利用一個簡單循環控制變量(只能使用順序類型數據)時,使用for語句最合適了;對于循環次數不能預先確定,宜使用while或repeat……until語句,但while 語句適用于有可能根據條件判斷使其成為空語句的情況,而repeat……until 語句適用于不論什么條件至少要執行一次循環體的情況。
通過如此的引導,使學生對循環結構的三條語句使用得心應手,在編程過程中能夠靈活應用;同時也培養了學生發散性思維。
(三)改變程序結構,達到程序優化
在掌握了基本語句的準確使用與簡單程序編寫的要領之后,要引導學生從“按步思維到靈活思維”的轉變,注意從程序的結構與設計思路上考慮變通,培養結構化和優化的意識,迅速提高編程能力。
一個程序設計出來了,不能滿足于沒有語法錯誤,能上機通過等起碼要求,有必要引導學生從以下幾個方面作一些深層次的思考:
1、程序的結構是否合理?
2、程序的設計思路是否清晰?
3、程序占用的機器空間與時間是否合適?
4、能不能作進一步的優化?
呈現“S =1-1/2+1/3-1/4+……+1/99-1/100”例子。
表達式中各項正負相間,基本的設計思路是把右邊表達式分成正與負兩組考慮,可以用兩組雙重循環來實現,這樣做,思路顯然比較簡單但程序的編碼較多,結構也顯復雜。能不能把兩組雙重循環簡化為一組單重循環來實現呢?可引導學生使用一個符號變量f解決正負符號相間,設計出結構非常簡明的程序:
program cbh4;
var
n,f,t:integer;
s:real;
begin
s:=0;t:=1; f:=1;n:=1;
while n
begin
s:=s+t;
n:=n+1;
f:=-f;
t:=f/n;
end;
writeln('s=',s:10:8);
readln
end.
運行此程序會發現結果為1,為什么?引導學生自己分析,尋找原因,最后學生發現:感覺從第2項開始就沒有參與運算,由于程序的說明部分,t是整型數,t無法等與一個分式的值(實型),始終為0。改程序的說明部分中的n為實型數即可。
這一設計打破了原來的正負分組的模式,從而優化了程序。
從設計思路,引導學生程序結構上變通,目的是培養程序的優化意識,尋求程序的優化途徑,通過變通,具體建立程序的可讀性比較,運行時間與占用空間的比較,結構化比較等優化概念,自然,對程序結構的變通較之前面對程序中某些語句某些變量的變通要深一個層次,要求更高,涉及面更廣,因此,在變通的引導上要做到具體、細致,切忌簡單了事,操之過急。
(四)構造合理算法,提高編程解決實際問題的能力。
算法是程序設計的依據。確定合理的算法是編程解決實際問題的前提與關鍵。引導對算法的變通,包括遞歸、搜索、迭代、遞推、模擬等基本算法的改造,傳統算法的推陳出新,必須緊密聯系具體問題的實際。
呈現“一個整數的每位數字都是1,至少多少位才能使這個數被13整除呢?”例子。
這是一個有趣的實際問題,一般考慮的,無非是整除,一個個進行試商檢驗是基本的算法,一些學生往往“躍躍欲試”地編出程序:
Program cbh5;
Var
a,i:integer;
Begin
a:=0;i:=0;
repeat
i:=i+1;
a:=a*10+1;
until a mod 13=0;
writeln('i=',i);
readln
End.
在程序調試運行受阻之后,就要啟發學生分析算法上的問題:當a的位數超過定義的整型數范圍后,程序出錯,然后引導學生思考:如果不用計算機,怎么求解?讓學生在寫出幾步整數除法的豎式的基礎上進行模擬尋求模擬變量(被除數、余數、商)建立模擬循環,從而設計出簡練可行的程序:
Program cbh6;
var
b,i,a:integer;
Begin
b:=111,i:=3;
repeat
i:=i+1;
a:=(b*10+1) p 13;
b:=b*10+1-13*a;
until b=0;
writeln('i=',i);
readln
End.
由于以上程序中每次作整除運算所得的余數b要小于13,因此下一次的被除數B*10+1(體現增加一個“1”)不超出整數的范圍,可確保整除的實現。可見, 算法的變通,有時直接關系到程序設計的成敗。
三 總結
所謂“提問-引導-探究性”教學模式,就是以提問為前提,引導為路徑,探究為目的的教學。具體說它是指教學過程是以教師精心設計的問題為前提,在教師的啟發誘導下,以學生獨立自主學習和合作討論為前提,以現行教材為基本探究內容,以學生周圍世界和生活實際為參照對象,為學生提供充分自由表達、質疑、探究、討論問題的機會,讓學生通過個人、小組、集體等多種解難釋疑嘗試活動,將自己所學知識應用于解決實際問題的一種教學形式。
把“提問-引導-探究性”教學模式應用于程序設計的教學中,實施引導變通程序設計,課堂教學氣氛活躍,教師和學生雙方都參與活動,他們都將以導師和主人的雙重身份進人課堂、辯謬糾錯、比較鑒別、層次分明、思維靈活,可以在提高程序設計能力,增強程序優化意識上收到良好成效。
程序設計中“提問-引導-探究性”教學模式,究竟在哪幾個問題上“設疑”,如何去“設疑引導”,本身就是“應變”的,并沒有一成不變的模式可套,必須因課制宜,因題制宜,因不同專業特點和學生實際而異。“辯疑解難”的實施,關鍵在引導,切忌想當然,脫離實際,強加于人,代替學生去完成變通,最后進行“釋疑鞏固”,同時注意,“設疑”應有梯度,有針對性,不能面面俱到,貪廣求深,欲速不達。
參考文獻:
[1] 周春荔. 數學觀與方法論. 北京:首都師范大學出版社,1996
[2]何克抗.網絡教學結構與網絡教學模式探討.教育技術通訊.
[3]高文主編.現代教學的模式化研究.山東教育出版社,2000
篇8
在高等學校的本科教育中,“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語言程序設計”教學課件的內容組織上可以清楚的給出以上判斷。“語法研究”型的課堂講授,更加放大了教材對“C語言程序設計”課程內容的“扭曲”程度,給學生提供了錯誤的程序設計語言學習方法,把簡單問題復雜化,更為嚴重的是,挫傷了學生學習計算機程序設計語言的興趣和積極性,把本應“主動學習”的課程成引入了“被動學習”的歧途,直接導致“懂語法、會做題,但不會編程序”的教學后果。
(三)考核誤區
篇9
關鍵詞 計算機 程序設計 課程群 建設和研究
中圖分類號:G642 文獻標識碼:A
隨著新課程改革的不斷深入,對計算機專業的教學要求也越來越高。在信息技術發展飛速的現代社會,在計算機專業課程中,建設與研究程序設計課程群已經成了時代對計算機專業知識教育的基本要求。“程序設計”是計算機程序設計課程群建設的關鍵內容,這個過程是對課程實踐內容要求相對較高的過程。計算機課程的發展領域非常廣闊,涉及到的內容也極為豐富,因此,利用建設程序設計課程群來提高學生的創造力和開拓性思維是我們培養新時代計算機人才最重要的內容。
1研究內容
計算機專業人才培養也有相應的要求和規定,即在本科四年的學習過程中,要把程序設計在每一門課程的教學過程中體現出來,應該把培養他們的程序設計能力放在最基本的能力培養方案之中。包括程序設計這項內容的計算機專業課程有十多門,例如,C語言和C++程序設計,C語言可以作為工作系統設計語言,編寫系統應用程序,也可以作為應用程序設計語言,編寫不依賴計算機硬件的應用程序,代碼清晰精簡,十分靈活;C++是一種靜態數據類型檢查的、支持多重編程范式的通用程序設計語言。它支持過程化程序設計、數據抽象、面向對象程序設計、泛型程序設計等多種程序設計風格、數據結構課程和數據結構課程設計、面向對象的以及數據庫的課程設計。還有一系列諸如Windows和Java等的程序設計,嵌入式程序設計和net程序設計等一系列課程。這些課程的應用設置完全是按照21世紀發展過程中對人才的需求特色來進行設置的。把為國家和社會培養大批實用性的人才作為主要的培養目標,不僅要讓他們了解計算機技術還要讓他們培養基本的程序設計技巧和基本能力。
2方式構建
要設置計算機程序設計課程群,就要按照學校教學特色的不同來進行設置。學校要分清計算機市場的市場需要,確定程序設計的工作職能以及工作范圍。把學校和企業進行緊密的結合與聯系,把學校的專業教師和企業的相關專家進行緊密的結合與聯系。組成一支由企業和專家共同組成的建設隊伍。現有的課程包含的科目內容比較多,比如,數據結構以及高級語言程序設計等。換句話說,也就是在已有的人才培養方案的基礎上,將課程群所包含的科目進行科學設置,在一定情況下也可以將人才培養方案進行大量的修改。程序建設工作要在充分對企業進行調查的基礎上進行,可以設置專門的操作程序,對學生的操作程序的技術進行評分,用以提高學生的綜合素質和職業能力。其次,要根據學生進行程序設計的基本能力進行課程群設置內容的組織。確定主要的課程內容,然后根據相關課程的性質進行課程群的建設。
3核心思路探索
(1)從已經建立起來的國家人才培養方案進行考慮,將各門課程科目在課程群里面進行科學的設置。
(2)就是仔細研究構建課程群的思路和主要框架,這個構建過程要從點到線,從線到面,從面到體,即,從知識點聯系到課程主線,再從課程主線構建整個課程群,最后建立起課程群與課程群之間的體系鏈接。經過這一系列的步驟,教學任務和學習任務才能得到相應的明確,教學和應用之時,會體現出更有層次感的知識架構,在學習的過程中,學生也可以對知識進行準確的定位,最后進一步地將基礎知識進行強化,因此,培養出來的人才的知識面會更廣,他們的實踐能力和應用能力也會相應的得到提高。
(3)是在授課過程中教師最好把理論知識、實踐應用、課程群的體系都形成體系化的教學環節。即使用一條龍的模式進行授課,這樣可以更清晰地分享給學生相應的程序設計和程序之間的銜接和轉化。
(4)是加強對學生思維的擴展,讓他們具備一定的創新知識和創新能力,這個過程不能急于求成,而是要一步一步的進行,也可以從細節出發,引導學生去自主創新,強化學生的創新意識和創新精神,讓他們更具抽象的思維能力和創造力,這樣才能達到創新型人才的培養目標。
(5)是將實驗引入課堂教學的基本內容里面,讓學生主動參與到程序設計里面去,這樣一方面可以將枯燥的知識變得有意思,提升學生上課的積極性和對這門課程的熱情,另一方面還可以增強學生的動手能力和創造力,讓他們更有學習的動力和熱情。
(6)結合現在軟件公司對人才的基本需求,和軟件企業緊密聯系在一起,這樣才能明確所建設的程序設計課程群是否能夠滿足市對人才的需求。
(7)將理論考試和上機考試的成績比例進行更加科學的分配,將程序設計也放在考試內容里設計出具有操作價值的上機考試科目。
(8)將自己的研究視角進行相應的改變,提倡理論聯系實際,將提高學生的綜合素質作為課程學習的前提和基礎。
4結語
總之,通過怎樣的教學方式才能將建設程序設計課程群的過程設計得更加實用,是每一位計算機專業教師和相關院校需要鉆研的問題。為了抑制傳統教學模式造成的不利影響,計算機程序設計課程必須將理論和實踐結合在一起,實現一條龍的設計步驟,把教師放在教育引導的位置上,強化對學生相關實際應用專業知識素養的培養。教師要從細節出發,引導學生去自主創新,強化學生的創新意識和創新精神,讓他們更具抽象的思維能力和創造力,這樣才能達到計算機專業程序設計課程群的建設目標。
參考文獻
[1] 丁麗.程序設計課程群建設與改革研究[J].山東省農業管理干部學院學報,2011,28(6).
[2] 孫雷,王新,張麗英等.計算機專業程序設計課程群的研究與實踐[J].教育教學論壇,2013(11).
篇10
關鍵詞:計算思維;程序設計;研究性教學
中圖分類號:G424 文獻標識碼:A 文章編號:1009-3044(2016)28-0150-03
1 背景
1.1 計算思維
“計算思維”一詞早在2006年美國卡內基梅隆(CMU)的周以真教授就給出了定義,其本質是抽象和自動化。周教授強調計算思維不僅屬于計算機科學家,而應是每一個人的基本技能。[1]2010年我國九校聯盟會議也發表聲明指出,培養復合型創新人才的一個重要內容就是要潛移默化地培養學生養成一種新的思維方式――計算思維。[2]
1.2 研究性教學
高等教育的任務是培養具有創新精神創新能力的高級專門人才。研究性教學作為一種開放式教學模式,是本科院校培養人才的重要途徑。2000年以來,教育部先后出臺“關于加強高等學校本科教學工作提高教學質量的若干意見”等文件,都明確提出積極推動研究性教學,提高大學生的創新能力。[3]各高校積極將研究性教學理念融入到教學改革中,積極探討研究性教學的理論與實踐模式。
由此可見,在當今信息技術時代,培養學生的計算思維能力是培養具有創新能力的人才的必要條件。在積極實踐研究性教學改革過程中,不斷滲透計算思維的思想,培養學生計算思維能力,是一項非常有意義的重要任務。
2 我校計算機基礎教學的現狀
為應對高校計算機基礎的教學改革,我校對計算機基礎課程的教學做了改動,非計算機專業學生第1學期先行開設大學計算機基礎課程,第2學期開設程序設計課程。這樣使新生在了解計算思維的概念后,能有意識地使用計算思維去思考問題、去解決一些基本問題,同時對后續開設的程序設計課程有一定的鋪墊作用。
我校在研究性教學初步實踐的基礎上,現已在18個專業全面開展研究性教學改革,計算機公共課教學也在此列中。將研究性教學改革應用于程序設計課程,正好解決了目前非計算機專業程序設計課程教學過程中尷尬局面,其一是教學過程中偏重語法講解,內容多、晦澀難懂;其二實驗課時少,學生編程能力和調試能力差等。
程序設計課程正好也是訓練學生計算思維能力的一個重要平臺。因而,如何在程序設計課程的研究性教學中訓練學生的計算思維能力,又如何利用學生的計算思維能力促進程序設計課程的教學改革,則是我們計算機公共課教學工作者要積極思考并付諸實踐的重要課題。
3 注重計算思維的程序設計課程研究性教學探討
我們在非計算機專業開展注重計算思維的程序設計課程(以《C語言程序設計》課程為例)研究性教學,是以培養創新人才為目標,激勵和引導學生主動發現問題、分析問題和解決問題,在以教師為主導、學生為主體的探究過程中運用計算思維的方法獲取知識、訓練思維、培養能力。
根據計算思維和研究性教學的特點,我們從本校實際情況出發,實施C語言程序設計課程研究性教學以課堂研究性教學為主,且又不僅僅局限于課堂中,輔以學生自主探究、合作學習、網絡自測、觀看視頻。對教學內容進行整合,將課程內容分為幾個階梯式的程序設計階段,依次是語法基礎、基本控制結構、模塊化程序設計等。教學過程中,根據具體教學內容靈活運用適合于研究性教學的方法和手段,如問題式教學法、案例教學法、任務驅動教學法等,激發學生的學習興趣,注重解決實際問題的程序設計思想與方法,注重計算思維能力的培養。
3.1 基本語法的問題式教學,培養計算思維能力
問題式教學通過提出一系列問題來組織教學內容,把問題貫穿于教學過程的始終。古人云“學起于思,思源于疑”,問題、疑問是思維的“啟發劑”。我們首先要創設問題情境,激活學生思維;交流討論,啟發學生反向思維;解決疑問,學會計算思維的方法。
C語言的基本語法、基本控制結構本身就蘊含著重要的計算思維。[4]我們通過不斷設問、反問,來逐步分析、挖掘、探索C語言語法的知識內涵,讓學生領悟語法定義的目的、形式和使用方式。這樣讓學生既學到了C語言基本語法,又有利于在使用過程中少犯錯誤,即使出現語法錯誤也能快速找出癥結所在。
示例問題:將華氏溫度轉換成攝氏溫度。轉換公式:C=5.0/9*(F-32),其中F為華氏溫度。
講解示例,首先設問“如何告訴計算機所要完成任務?”,當然用符號表示(即符號化),這是一次抽象的過程。再問“直接輸入轉換公式,計算機能識別公式中的符號嗎?”,演示發現系統會報錯,無法識別F和C。接著問“怎樣讓系統接受未知的數據?”及“在C語言中如何“介紹”新數據?”,此時讓學生去自學、討論數據對象的命名規則及基本數據類型,并帶著問題“為何不能將形如int、1st、W.Join作為對象名(用戶標識符)?int和Int在有何區別?”去思考。通過討論最終確認,使用“float F,C;”來聲明兩個實型變量F和C。這又一次的抽象使學生不僅學到了知識,而且還體會計算思維的確定性和形式化。
聲明變量后,設問“能運行并得到正確結果嗎?答案是多少?”,此時讓學生手算或心算,有人發現F的值未知,無法計算。但教師演示系統卻未報錯,提問“為什么?”學生帶著好奇,教師道出原因,讓其進一步了解變量的含義。為得到正確結果,需要先為F賦值,設問“怎么賦值?”,學生回答“F=50”,教師給予肯定的同時反問,這樣系統每次運行得到的結果會怎樣?讓學生發現這樣的程序不具備通用性,由此引出C語言的輸入輸出庫函數。
以問題為中心的教學示例中,將學生思考、討論和教師講解、點評有機地結合起來,師生在互動中學習、探究,教師引導學生積極主動地獲取知識,學生通過基本語法的學習也培養了計算思維能力。
3.2 三種控制結構的案例教學,強化計算思維能力
案例的選取是案例教學中的關鍵因素,[5]選取的案例所反應的知識點要豐富,具有針對性、啟發性和擴展性,應由簡單到復雜。針對結構化程序設計思想中的順序、選擇和循環三種結構,通過抽象問題、分組討論、集中討論和總結反思等環節,使學生在案例分析的過程中體會計算思維的特征,強化計算思維能力。
案例1,已知三條邊長,求三角形面積。[6]
學生課前準備案例時,收集或查找各種計算三角形面積的方法。在小組討論時每位學生給出不同的解題思路,相互間指出問題,比較哪種算法描述更簡潔。課堂教學時采用集中討論,每組推選代表簡述討論結果,由教師和其他組學生給予評價。教師在教學過程中不斷啟發學生、鼓勵學生,同時給出總結,比如該案例使用海倫公式計算是較方便的方法,使用語言描述算法時注意的語法規則。如果有小組提出“三邊能否構成三角形”問題,則應大力表揚,促使學生提高思維的縝密性和嚴謹性,同時順理成章地引入分支結構。
案例2,比較兩位學生的成績,輸出最高分。如果人數擴展到3人、N人,如何找出最高分?
案例第1問解決思路非常清晰簡潔,使用1次雙分支結構即可,至少兩種描述方法:if-else和switch-case結構。當比較人數擴展到3人時,和學生探討出多種描述算法,既可以使用嵌套的分支結構,也可兩次使用分支結構。通過討論可以開闊學生的思路,又促使學生主動思考,鼓勵思維的多樣性。案例的最后一問是難點,教師應給予指點,讓學生帶著問題“N個成績如何存儲?使用N個簡單變量可行嗎?N個成績需要比較多少次?”去查資料、思考,有思路也有困惑。“N個成績比較N-1次找出最高分”答案是肯定的,但數據存儲是難點。一種思路是用數組,引入數組的概念,為下一章做好鋪墊;另一種思路依舊用簡單變量,但用N個簡單變量是不現實的,引導學生縱向思考,每次存放一個成績,重復N次即可,引入循環結構。解決方案是用兩個變量,擂臺思想,循環N-1次就能找出N個中的最高分。
通常我們設計的教學案例都不是很復雜,讓學生努力一下能解決,但是要具備多樣性和擴展性,讓學生從不同角度認識問題,用不同方式描述算法,用不同方法實現問題求解。用程序設計語言描述、解決問題,正是將人的日常思維轉換到計算機思維的過程。
3.3 模塊化設計的任務驅動教學,提高計算思維層次
任務驅動教學是一種建立在建構主義學習理論基礎上的教學模式,[7]它以教師為主導、學生為主體,教、學雙方都圍繞若干項任務展開,在求知欲的驅動下,學生采用自主探究和協作學習方式,根據對任務的理解,運用共有知識和已有經驗提出解決方案、完成特定任務。
將任務驅動教學法應用于程序設計課程教學的后半期,此時學生已具備一定的程序設計基礎知識和計算思維能力,教師把精心準備的小系統(如一元多項式運算系統、基本算術運算測試系統、矩陣運算系統及小規模信息處理系統)的開發任務,分配給每個協作小組,也可讓小組(或組長)從若干任務中挑選。
每個小組接到不同任務后,結合系統設計要求,采用自頂向下、逐步細化、模塊化的方法,設計系統的總體結構,包括系統的基本處理流程、組織結構、模塊劃分、功能分配、接口設計和數據結構設計等。比如一元多項式運算系統,其設計要求是實現一元多項式的加、減、乘、除運算。從表面上看系統應由1個主模塊和4個子模塊組成,起主導作用的教師要引導學生運用計算思維的關注點分離、抽象和分解的方法進行分析。為了能進行運算,首先要輸入一元多項式,運算結束后要輸出一元多項式,增加輸入、輸出兩個子模塊。在實現四種運算時,引導學生使用計算思維的約簡、嵌入、轉化等方法,將其轉化成合并同類項、降冪排列、刪除系數為0項等問題,又需增加4~5個功能模塊。在任務驅動下,協作小組成員通過參考書、網絡等自主檢索、探究、思考、討論,對每個模塊進一步細化,確定每個模塊的具體功能,畫出系統的組織結構圖和基本處理流程。在設計數據結構時,小組成員討論是從已會的一維、二維數組中選擇,還是從未學的結構數組、鏈表中選擇,既要考慮能便于數據的處理,又要考慮組內成員的水平,因為每個系統需組內成員分工協作才能完成。組長此時可以協調,先用一維數組實現,后期也可在素質較高的學生帶領下使用鏈表等實現,這樣小組成員相互協作、相互啟發、共同提高,體現團隊合作的理念。
每位成員領取分解的任務后,根據共同確定的數據結構和模塊接口的描述,對具體子模塊進行詳細設計,給出詳細的算法描述。然后,分組討論每位成員的算法可行性,以及與其他子模塊之間的調用關系,如遇到解決不了的問題,教師可參與討論,給予一定指導,調動大家的積極性。算法確定后,每位學員根據算法編寫代碼并寫出設計報告。協作小組成員再集中交流各自完成的情況,由組長集成系統代碼,組員一起參與調試過程,發現問題解決問題,共同進步。每位學員按照報告模板提交各自的設計成果,采用答辯的形式在班級討論課上進行匯報。答辯過程中,教師和其他學生可以提出看法和觀點,教師應對答辯學生的講述和提出異議的觀點進行正誤的分析,因為學生為了完成這項任務都是深思熟慮的,教師及時地分析總結歸納,不僅使學生對所學知識的鞏固,而且進一步擴展學生的計算思維能力。
采用任務驅動教學法不再強調系統開發的成功與否,而是強調學生在系統設計過程中的收獲。每位學生通過對具體問題分析、討論、解決,不斷訓練自己的計算思維能力,通過以小組方式進行一個小規模系統的設計,將學生的計算思維能力提高了一個層次。
4 結語
在程序設計課程研究性教學過程中不斷滲透計算思維的思想,更加利于學生對知識的掌握,同時利于提高計算思維能力,推動學生創新能力的進一步發展。我們從學校實際出發,提出整合教學內容,對基本語法的問題式教學、基本控制結構的案例教學及模塊化設計的任務驅動教學等研究性教學法進行探討,以期使教師能夠擺脫教材束縛,將理論與實驗課時、課內和課外充分利用,更好地發揮教學的自主性,促進學生的計算思維能力的提高。
參考文獻:
[1] Jeannette putational Thinking[J].Communications of the ACM,2006,49(3):33-35.
[2] 何欽銘,陸漢權,馮博琴. 計算機基礎教學的核心任務是計算思維能力的培養[J]. 中國大學教學,2010( 9):5-9.
[3] 徐風生. 研究性教學的理論探討與實踐[J]. 高等理科教育,2012(6):44-48.
[4] 徐新海,林宇斐. 注重計算機思維的啟發式C語言語法教學[J]. 計算機教育,2014(9):1-4.
[5] 唐芳. 案例教學法與任務驅動教學法的比較[J]. 順德職業技術學院學報,2011(10):36-37