程序設(shè)計的基本結(jié)構(gòu)范文

時間:2023-07-18 17:37:10

導(dǎo)語:如何才能寫好一篇程序設(shè)計的基本結(jié)構(gòu),這就需要搜集整理更多的資料和文獻,歡迎閱讀由公務(wù)員之家整理的十篇范文,供你借鑒。

程序設(shè)計的基本結(jié)構(gòu)

篇1

關(guān)鍵詞:C語言;程序設(shè)計;循環(huán)結(jié)構(gòu);教學(xué)方法

中圖分類號:G642文獻標(biāo)識碼:A

1引言

“C語言程序設(shè)計”是計算機系各專業(yè)的必修課程,屬專業(yè)主干課,是一門學(xué)位課程。也是各高校部分非計算機專業(yè)開設(shè)的程序設(shè)計課程之一。本課程開設(shè)的目的是使學(xué)生掌握面向過程的程序設(shè)計的基本概念,逐步形成正確的程序設(shè)計思想,理解結(jié)構(gòu)化程序設(shè)計方法;掌握程序設(shè)計的基本技術(shù),程序設(shè)計的基本組織方法即函數(shù)(模塊)程序設(shè)計;具備調(diào)試程序的能力。因為C語言功能強大,程序編寫靈活,具有較強的實踐性,是一門高級語言中的“低級語言”,既可以用來編寫系統(tǒng)軟件,又可以用來開發(fā)應(yīng)用軟件,因此對學(xué)生以后參與專業(yè)領(lǐng)域的應(yīng)用軟件的開發(fā)和使用會有極大的幫助。C語言是結(jié)構(gòu)化的語言,學(xué)好C語言程序設(shè)計,能為后續(xù)課程(數(shù)據(jù)結(jié)構(gòu)、編譯原理、操作系統(tǒng)、C++、Java等)及其他程序設(shè)計課程的學(xué)習(xí)打下基礎(chǔ)。同時,C語言程序設(shè)計也是計算機類各種考試所要求的重點課程之一。

2循環(huán)結(jié)構(gòu)程序設(shè)計

結(jié)構(gòu)化程序設(shè)計中包含三種基本技術(shù):順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。循環(huán)結(jié)構(gòu)的程序設(shè)計是學(xué)生學(xué)習(xí)了結(jié)構(gòu)化程序設(shè)計的前兩種基本技術(shù)之后的第三種基本技術(shù),是結(jié)構(gòu)化程序設(shè)計技術(shù)中最重要也是最難的部分。這門課程一般都是學(xué)生學(xué)習(xí)程序設(shè)計的入門課程,第一次學(xué)習(xí)循環(huán),可能難于理解“循環(huán)”的含義,在設(shè)計程序時正確使用循環(huán)也就更困難了。針對這些特點,循環(huán)結(jié)構(gòu)程序設(shè)計的教學(xué)方法和教學(xué)手段也就值得探討。

3循環(huán)結(jié)構(gòu)程序設(shè)計的教學(xué)方法

3.1教學(xué)重點和難點

要想學(xué)生能夠輕松理解和掌握循環(huán)結(jié)構(gòu)的程序設(shè)計,首先得確定本部分內(nèi)容的重點和難點。

本部分的重點主要是:(1)循環(huán)控制結(jié)構(gòu)及其設(shè)計。(2)循環(huán)控制語句的應(yīng)用。教學(xué)重點是循環(huán)控制語句中的while語句,只要把while語句的使用講解清楚了,后面的for語句和do-while語句就容易多了。

本部分的難點是循環(huán)控制結(jié)構(gòu)及其設(shè)計。

3.2突出教學(xué)重點與分散難點的方法

為了突出教學(xué)中的重點并分散難點,可以從三方面入手:

(1) 從分析問題的重復(fù)性入手。學(xué)生在日常的生活、學(xué)習(xí)中能看到、體會到重復(fù)這種行為。精心設(shè)計實例,給學(xué)生一個比較實際的切入點,通過教師的引導(dǎo),使學(xué)生能體查、歸納“重復(fù)行為”,從而理解和掌握循環(huán)的主要特點:有規(guī)律地重復(fù)操作。在教師的啟發(fā)、引導(dǎo)下,使學(xué)生在課堂上真正地成為“主體”,教師扮演“主導(dǎo)”角色。在整個過程中,緊緊抓住循環(huán)程序設(shè)計的思想,采用“自頂向下,逐步求精”的結(jié)構(gòu)化程序設(shè)計方法,把重點突出出來,并把難點進行分散,使學(xué)生容易理解和接受。

(2) 難點內(nèi)容,提前做好鋪墊。在前面內(nèi)容適當(dāng)?shù)牡胤桨才懦霈F(xiàn)循環(huán)程序,但不講它的功能,為講解現(xiàn)在的內(nèi)容做好鋪墊,打下伏筆。這使得學(xué)生的每一步學(xué)習(xí)都有基礎(chǔ),是一個循序漸進的過程,使學(xué)生的學(xué)習(xí)是在“走臺階”,而不是“三級跳”,效果很好。

(3) 在循環(huán)程序設(shè)計的應(yīng)用中,可以從簡單公式化的循環(huán)入手到復(fù)雜非公式化的循環(huán)的處理。講解過程中,通過黑板進行詳細分析和講解,使學(xué)生加深學(xué)習(xí)和理解。適當(dāng)?shù)牡胤竭M行提問,教師引導(dǎo)學(xué)生積極參與到分析問題,解決問題的過程中,寫出程序后,放到實際的環(huán)境下運行,讓學(xué)生來分析程序的正確性,改正程序的錯誤,有利于學(xué)生理解難點、掌握重點。

3.3教學(xué)過程的設(shè)計與組織

(1) 提出問題

本部分的內(nèi)容是循環(huán)程序設(shè)計,體現(xiàn)在兩個方面,一是循環(huán)結(jié)構(gòu)程序設(shè)計的算法表示;二是循環(huán)結(jié)構(gòu)程序的C語言表示。循環(huán)程序設(shè)計是結(jié)構(gòu)化程序設(shè)計中最難、最復(fù)雜的部分,而授課對象是初次接觸程序設(shè)計和循環(huán)結(jié)構(gòu),因此循環(huán)的引入就至關(guān)重要。例如:通過引入求5!這個簡單的例子,運用已經(jīng)學(xué)過的順序結(jié)構(gòu)程序設(shè)計就可以實現(xiàn);但是求復(fù)雜的階乘,比如20!,任意自然數(shù)n!,用已經(jīng)學(xué)過的順序結(jié)構(gòu)程序設(shè)計和選擇結(jié)構(gòu)程序設(shè)計就難于解決,要用簡單的方法解決這樣的問題,就必須使用結(jié)構(gòu)化程序設(shè)計中的第三種基本技術(shù):循環(huán)結(jié)構(gòu)的程序設(shè)計。這樣就輕松地引入了循環(huán)結(jié)構(gòu)程序設(shè)計。在引入的過程中,要注重調(diào)動學(xué)生的積極性,采用互動教學(xué)法帶動學(xué)生的積極性。

(2) 解決問題的方法及講授新內(nèi)容

在用問題引入了循環(huán)后,第一步,分析用循環(huán)控制結(jié)構(gòu)求20!的算法的自然語言和流程圖表示。第二步,為了實現(xiàn)這種循環(huán)控制行為,C語言提供了多種循環(huán)控制語句,while語句就是其中的一種,介紹while語句的一般形式和功能。第三步,講解while循環(huán)語句的應(yīng)用。在講解的過程中,為了提高學(xué)生的學(xué)習(xí)效果,達到預(yù)期的目標(biāo),除了采用常用的教學(xué)方法和手段外,還可以采用以下一些教學(xué)方法和手段:

① 注重啟發(fā)、引導(dǎo)學(xué)生。教師在講解分析時,注重啟發(fā)、引導(dǎo)學(xué)生主動分析問題、解決問題。

② 注重采用任務(wù)驅(qū)動的教學(xué)模式。通過提出問題,分析問題,引入新知識,解決問題,總結(jié)提高,一步步實現(xiàn)教學(xué)的目標(biāo)。

③ 采用國際上慣用的解析教學(xué)法。

④ 把編寫的程序放到實際環(huán)境下運行。讓學(xué)生來分析程序的正確性,改正程序的錯誤,有利于學(xué)生掌握好重點、難點知識。

⑤ 應(yīng)用現(xiàn)代化多媒體教學(xué)手段,有利于提高教學(xué)效率,便于學(xué)生理解。充分利用黑板和投影相結(jié)合的方式;分析過程用黑板進行教學(xué),以便體現(xiàn)思維過程。

4結(jié)束語

要使學(xué)生輕松容易地理解和掌握C語言中的循環(huán)結(jié)構(gòu)程序設(shè)計方法和技巧,必須在教學(xué)的所有環(huán)節(jié)上都進行認(rèn)真研究和精心設(shè)計。通過對循環(huán)結(jié)構(gòu)程序設(shè)計的教學(xué),使學(xué)生提高綜合應(yīng)用的能力,為今后的后續(xù)課程及軟件的設(shè)計和開發(fā)打下堅實的基礎(chǔ)。

參考文獻:

[1] 徐慶生.C語言程序設(shè)計[M].北京:科學(xué)普及出版社,2007.

[2] 高牧,楊志強,許蘭蘭,等. C/C++教學(xué)改革的探索與實踐[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

【關(guān)鍵詞】程序設(shè)計 梯形圖 經(jīng)驗法

由于可編程控制器的控制功能以程序的形式出現(xiàn),所以程序設(shè)計是一個重要環(huán)節(jié)。梯形圖是可編程序控制器的重要程序設(shè)計方法。一般應(yīng)用程序設(shè)計可以分為經(jīng)驗設(shè)計法、邏輯設(shè)計法、順序功能圖設(shè)計法等。本文以工作臺自動往返循環(huán)工作為例主要介紹采用經(jīng)驗設(shè)計法進行梯形圖程序設(shè)計。

由于生產(chǎn)過程控制要求的復(fù)雜程度不同,可將程序按結(jié)構(gòu)形式分為模塊化程序和基本程序。

基本程序既可以作為獨立程序控制簡單的生產(chǎn)工藝過程,也可以作為組合模塊結(jié)構(gòu)中的單元程序;依據(jù)計算機程序的設(shè)計思想,基本程序的結(jié)構(gòu)方式只有三種:順序結(jié)構(gòu)、條件分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。

模塊化程序:把一個總的控制目標(biāo)程序分成多個具有明確子任務(wù)的程序模塊,分別編寫和調(diào)試,最后組成一個完整總?cè)蝿?wù)的完整程序。這種方法稱為模塊化程序設(shè)計

經(jīng)驗設(shè)計法需要設(shè)計者掌握大量的基本程序。這些基本程序例如電動機正反轉(zhuǎn)聯(lián)鎖控、斷開延時和接通延時控制程序、警燈閃爍控制程序等。

我們以工作臺自動往返循環(huán)工作來進行說明。

1 設(shè)計要求

(1)自動循環(huán)工作。

(2)點動控制。

(3)單循環(huán)運行,即工作臺前進、后退一次循環(huán)后停在原位。

(4)8次循環(huán)計數(shù)控制。即工作臺前進、后退為一個循環(huán),循環(huán)8次后自動停在原位。

2 分析控制要求

(1)工作臺前進與后退是通過電動機正反轉(zhuǎn)來控制的,所以要用電動機正反轉(zhuǎn)這一基本程序;

(2)工作臺工作方式有點動控制和自動控制兩種方式,可以采用程序(軟件的方法)實現(xiàn)兩種運行方式的轉(zhuǎn)換。

(3)工作臺有單循環(huán)和多次循環(huán)兩種工作狀態(tài),可以采用控制開關(guān)來選擇。

(4)多次循環(huán)因要限定循環(huán)次數(shù),所以選擇計數(shù)器來進行控制。

3 分配I/O點

PLC控制系統(tǒng)I/O分配,依據(jù)生產(chǎn)流水線從前到后,I/O點數(shù)由小到大,盡可能把一個系統(tǒng)、設(shè)備或部件的I/O信號集中編制,以利于維護。表1為本例的I/O分配地址表。

4 控制程序設(shè)計

4.1 基本控制環(huán)節(jié)的程序

本控制要求的對象是工作臺,工作方式有前進和后退。電動機正轉(zhuǎn)時,使工作臺前進,電動機反轉(zhuǎn)時,使工作臺后退,因此基本控制程序是正反轉(zhuǎn)控制程序。

4.2 實現(xiàn)自動往返功能的程序設(shè)計

工作臺前進過程中撞塊壓合SQ2后,SQ2動作,X6常閉觸點應(yīng)先斷開Y0線圈,使工作臺停止前進,后X6的常開觸點再接通Y1線圈,使工作臺后退,完成工作臺由前進轉(zhuǎn)為后退的動作,同理,撞塊壓合SQ1后,工作成由后退轉(zhuǎn)為前進的動作,因此在圖(1)中加入二個限位開關(guān),如圖(2)所示。

4.3 實現(xiàn)點動控制功能和單循環(huán)控制功能程序設(shè)計

根據(jù)點動的概念可知,如果在上述梯形圖中解除自鎖,就能實現(xiàn)點動控。所以利用開關(guān)SA1來選擇點動和自動控制。SA1閉合后實現(xiàn)點動,SA1斷開,實現(xiàn)自動控制。

單循環(huán)工作方式是指啟動按鈕按下后,工作臺由原位前進,當(dāng)撞塊壓合SQ2后由工作臺前進轉(zhuǎn)為后退,后退到原位后撞塊壓合SQ1后,使工作臺停在原位。如果撞塊壓合SQ1后,則X5常閉觸點斷開,使Y1線圈失電,工作臺停止后退。在X5常開觸點閉合后,只要不使Y0線圈得電,工作臺就不會前進,這樣便實現(xiàn)了單循環(huán)控制。如圖(3)所示。

根據(jù)上面這個例子,我總結(jié)出經(jīng)驗法設(shè)計梯形圖的一般規(guī)律:

(1)根據(jù)控制要求,設(shè)計出基本程序;

(2)逐步補充完善程序;使其能完生滿足控制要求;

(3)設(shè)置必要的聯(lián)鎖保護程序。

PLC控制系統(tǒng)的程序設(shè)計是一個步驟有序的系統(tǒng)工程,要想做到熟練自如,需要反復(fù)實踐和練習(xí)。設(shè)計的每一步,都要依靠平時所積累的程序設(shè)計經(jīng)驗來設(shè)計程序。

參考文獻

[1]張夢欣.可編程序控制器及其應(yīng)用[M].中國勞動社會保障出版社,2006.

篇3

關(guān)鍵詞:算法程序 數(shù)據(jù)結(jié)構(gòu)

隨著世界步入信息化和網(wǎng)絡(luò)化,以及計算機的普及,計算機教育隨即也變得異常重要,如何讓中國培養(yǎng)出更多的IT人才,讓中國成為真正意義上的電子信息化與網(wǎng)絡(luò)一體化的國家,這也成為我們國家面臨的一項艱巨任務(wù),因此對廣大學(xué)生的計算機教育也必須更加重視起來,計算機教育應(yīng)該逐漸面向大眾化,不斷提高計算機在我國的普及程度,也是我們強國的必經(jīng)之路。

程序設(shè)計教學(xué)長期以來一直是中職計算機教學(xué)的重點和難點之一,如何學(xué)好程序設(shè)計成為廣大學(xué)生最為關(guān)心的問題,如何教好程序設(shè)計也成為廣大老師長期不斷探討的問題,現(xiàn)在我已自身的學(xué)習(xí)經(jīng)驗和體會淺談一下學(xué)習(xí)的方法。

實際上如果我們要學(xué)好程序設(shè)計,算法,數(shù)據(jù)結(jié)構(gòu),程序設(shè)計方法和語言這四個方面是一個程序設(shè)計人員必備的知識,很多人在學(xué)習(xí)程序設(shè)計的過程中很茫然,不知道怎么進行或者說不知道怎么去寫語句,其實我們出現(xiàn)的問題無非就是沒掌握上面四個必備的知識,現(xiàn)在我的提議是以算法,數(shù)據(jù)結(jié)構(gòu),程序設(shè)計方法和語言這四個方面板塊為基礎(chǔ),分塊教學(xué),各個擊破,這樣也就能夠很好的學(xué)好程序設(shè)計了。

算法:算法可以說是程序的靈魂,廣義地說,算法是為解決一個問題而采取的方法和步驟。設(shè)計出高質(zhì)量的算法,并研究算法所耗費的計算資源與問題規(guī)模之間的函數(shù)關(guān)系。算法設(shè)計與算法分析是不可分割的一個整體。按照算法所處理的對象進行分類,算法設(shè)計與分析主要有數(shù)值算法和非數(shù)值算法兩大領(lǐng)域。按照計算方式進行分類,則可分為串行算法和并行算法。算法設(shè)計的任務(wù)是對各類具體的問題設(shè)計高質(zhì)量的算法,以及研究設(shè)計算法的一般規(guī)律和方法。

數(shù)據(jù)結(jié)構(gòu):數(shù)據(jù)結(jié)構(gòu)是指相互之間存在著一種或多種關(guān)系的數(shù)據(jù)元素的集合和該集合中數(shù)據(jù)元素之間的關(guān)系組成。在許多類型的程序的設(shè)計中,數(shù)據(jù)結(jié)構(gòu)的選擇是一個基本的設(shè)計考慮因素。許多大型系統(tǒng)的構(gòu)造經(jīng)驗表明,系統(tǒng)實現(xiàn)的困難程度和系統(tǒng)構(gòu)造的質(zhì)量都嚴(yán)重的依賴于是否選擇了最優(yōu)的數(shù)據(jù)結(jié)構(gòu)。許多時候,確定了數(shù)據(jù)結(jié)構(gòu)后,算法就容易得到了。有些時候事情也會反過來,我們根據(jù)特定算法來選擇數(shù)據(jù)結(jié)構(gòu)與之適應(yīng)。不論哪種情況,選擇合適的數(shù)據(jù)結(jié)構(gòu)都是非常重要的。選擇了數(shù)據(jù)結(jié)構(gòu),算法也隨之確定,是數(shù)據(jù)而不是算法是系統(tǒng)構(gòu)造的關(guān)鍵因素。這種洞見導(dǎo)致了許多種軟件設(shè)計方法和程序設(shè)計語言的出現(xiàn),面向?qū)ο蟮某绦蛟O(shè)計語言就是其中之一。

程序設(shè)計方法: 程序設(shè)計方法學(xué)是討論程序的性質(zhì)以及程序設(shè)計的理論和方法的一門學(xué)科[1], 是研究和構(gòu)造程序的過程的學(xué)問,是研究關(guān)于問題的分析,環(huán)境的模擬,概念的獲取,需求定義的描述, 以及把這種描述變換細化和編碼成機器可以接受的表示的一般的方法。

用以指導(dǎo)程序設(shè)計各階段工作的原理和原則,以及依此提出的設(shè)計技術(shù)。有時也指研究這些原理、原則和技術(shù)的學(xué)科。程序設(shè)計方法學(xué)的目標(biāo)是能設(shè)計出可靠、易讀而且代價合理的程序。程序設(shè)計方法學(xué)包括程序理論、研制技術(shù)、支援環(huán)境、工程規(guī)范和自動程序設(shè)計等課題,使程序設(shè)計更加科學(xué)化和工程化。其基本內(nèi)容是:結(jié)構(gòu)程序設(shè)計;程序理論在程序設(shè)計技術(shù)中的應(yīng)用,以及規(guī)格說明和變換技術(shù)。程序理論與程序設(shè)計方法學(xué)的發(fā)展密切相關(guān),它豐富了程序人員的思維方法,促進了程序設(shè)計技術(shù)的發(fā)展。其研究的主要內(nèi)容為結(jié)構(gòu)化程序設(shè)計,數(shù)據(jù)抽象與模塊化程序設(shè)計,程序正確性證明,面向?qū)ο蟮某绦蛟O(shè)計方法等。

語言:程序設(shè)計語言,用于書寫計算機程序的語言。語言的基礎(chǔ)是一組記號和一組規(guī)則。根據(jù)規(guī)則由記號構(gòu)成的記號串的總體就是語言。在程序設(shè)計語言中,這些記號串就是程序。程序設(shè)計語言有3個方面的因素,即語法、語義和語用。語法表示程序的結(jié)構(gòu)或形式,亦即表示構(gòu)成語言的各個記號之間的組合規(guī)律,但不涉及這些記號的特定含義,也不涉及使用者。程序設(shè)計語言是人們指揮計算機的工具。它是一種工程語言,由字,詞,語法規(guī)則構(gòu)成的指令系統(tǒng),高級語言提供了常用的數(shù)據(jù)描述核對數(shù)據(jù)操作規(guī)則的描述,程序設(shè)計就是根據(jù)特定的問題,使用某種程序設(shè)計語言,設(shè)計出計算機執(zhí)行的指令序列。發(fā)展趨勢

程序設(shè)計語言是軟件的重要方面。它的發(fā)展趨勢是模塊化、簡明性和形式化。

①模塊化。不僅語言具有模塊成分,程序由模塊組成,而且語言本身的結(jié)構(gòu)也是模塊化的。

②簡明性。涉及的基本概念不多,成分簡單,結(jié)構(gòu)清晰,易學(xué)易用。

篇4

【關(guān)鍵詞】程序設(shè)計課程 計算思維

學(xué)習(xí)程序設(shè)計,要注重計算思維的滲透與養(yǎng)成。計算思維是基于數(shù)與形的邏輯關(guān)系,來探討問題求解的過程。在程序設(shè)計課程教學(xué)中,如何從教學(xué)方法創(chuàng)新上,來強調(diào)計算思維,來引導(dǎo)學(xué)生從計算思維中來洞曉和理解程序設(shè)計的真諦。為此,本文將結(jié)合C語言教學(xué)實際,通過引入Raptor流程可視化軟件,來創(chuàng)新程序設(shè)計課程教學(xué)模式,激發(fā)學(xué)生的計算思維,提升教學(xué)實效。

1 程序設(shè)計課程對計算思維的體現(xiàn)

在程序設(shè)計課程教學(xué)實踐中,語法規(guī)則是體現(xiàn)程序設(shè)計思想與方法的具體內(nèi)容,也是引導(dǎo)學(xué)生運用程序設(shè)計來解決問題的有效途徑。但對于學(xué)生而言,程序語法在后續(xù)的學(xué)習(xí)中,因抽象性過強而容易陷入迷惑。為此,利用“Raptor”可視化程序設(shè)計流程軟件,將程序設(shè)計的“思想”與“方法”導(dǎo)入到流程圖中,引導(dǎo)學(xué)生從問題的求解思路砝斫庥鋟ǎ幫助學(xué)生從中激發(fā)學(xué)習(xí)熱情,解決設(shè)計難題。突出計算思維的滲透,主要從三方面來體現(xiàn)。一是強調(diào)學(xué)生對程序設(shè)計基本知識的掌握,特別是對于相對繁瑣的程序,從基本概念的掌握學(xué)習(xí)中,來理解程序設(shè)計的思想與方法,學(xué)會調(diào)試程序;二是注重程序?qū)栴}的求解能力,程序設(shè)計的目標(biāo)在于解決問題,而問題的呈現(xiàn)是以抽象化程序代碼形式來表現(xiàn),因此,要注重對數(shù)學(xué)模型、算法的優(yōu)化學(xué)習(xí);三是注重創(chuàng)新能力的培養(yǎng),特別是突出計算思維能力,要從算法思維多樣化上來引導(dǎo)學(xué)生多實踐,多感悟。

2 Raptor可視化軟件與程序設(shè)計計算思維的協(xié)同運用

2.1 明確Raptor的流程圖特色

Raptor作為可視化流程圖工具,其特色表現(xiàn)在三點。一是對于各類圖形符號具有可執(zhí)行的流程圖,可以實現(xiàn)對程序設(shè)計語法的直觀呈現(xiàn)。二是在操作上簡便、快捷,特別是通過拖拽方式對不同圖形符號進行位置優(yōu)化,以形成完整的流程圖;三是在設(shè)計思維上便于掌握和理解。另外,Raptor還能夠提供執(zhí)行步驟計算與統(tǒng)計,為算法分析、優(yōu)化提供參考。

2.2 Raptor在算法設(shè)計中的應(yīng)用

計算思維在程序設(shè)計中的運用,要遵循“發(fā)現(xiàn)問題、分析問題、尋求解決思路、優(yōu)化設(shè)計方案”等流程,并從中來強化計算思維的養(yǎng)成。根據(jù)《大學(xué)計算機基礎(chǔ)課程教學(xué)基本要求》,在引入程序設(shè)計教學(xué)與Raptor流程軟件時,要遵循教學(xué)內(nèi)容的漸進性,注重計算思維的連貫性,特別是對于新生,由于對程序設(shè)計學(xué)習(xí)好奇心強,要在案例選擇上貼近學(xué)生實際,便于學(xué)生從中掌握程序設(shè)計的算法思路。以“猜數(shù)游戲”為例,對于20以內(nèi)的整數(shù),計算機隨機給出,讓學(xué)生進行猜想,正確顯示“Right”,錯誤顯示“Wrong”。在程序設(shè)計的算法分析上,一要明確猜數(shù)的功能,利用Random隨機函數(shù)功能來優(yōu)化程序結(jié)構(gòu),便于學(xué)生操作;二要對所給出的數(shù)字進行判斷,利用Raptor嵌入式選擇結(jié)構(gòu)來判定是大還是小;三要對程序的交互設(shè)計,利用循環(huán)結(jié)構(gòu)來設(shè)計程序的連貫性,直到猜出正確數(shù)字為止;四要進行“非數(shù)字符號”判斷及處理;五要對猜測次數(shù)進行限定,利用Raptor嵌套循環(huán)結(jié)構(gòu)來實現(xiàn)最大次數(shù)限定;六要對猜測過程數(shù)據(jù)進行存儲,利用數(shù)組知識來完成;七要對猜測的數(shù)字進行二分處理,利用二分查找方法來完成。

當(dāng)然,在選擇程序設(shè)計任務(wù)時,結(jié)合學(xué)生的程序認(rèn)知能力和水平,對程序設(shè)計實踐要進行層次劃分,讓學(xué)生結(jié)合自我能力來完成不同的設(shè)計題目。如雞兔同籠問題、判定閏年的算法,100以內(nèi)的奇偶數(shù)之和,水仙花數(shù)、出售金魚等算法題,還有一些難度高的如抓肇事司機,打印等腰三角形,字母出現(xiàn)頻率統(tǒng)計等。通過對不同算法程序設(shè)計實踐知識的運用,讓學(xué)生從問題的抽象思維到程序設(shè)計的基本流程中,在倡導(dǎo)多樣化算法思維實踐與鍛煉中,實現(xiàn)對不同問題的不同理解與運用,來分析不同解法的優(yōu)缺點,來不斷改進和完善程序設(shè)計。

2.3 注重教學(xué)方法的創(chuàng)新

程序設(shè)計課程教學(xué)方法的運用,與學(xué)生計算思維的培養(yǎng)是相關(guān)的,對于教學(xué)法的創(chuàng)新,需要從課堂知識講授、動手設(shè)計程序、課下教學(xué)輔導(dǎo)等方面來綜合。借助于Raptor可視化設(shè)計環(huán)境,其支持Novice、Intermedia和Object Oriented三種模式,分別為初級程序設(shè)計、中級程序設(shè)計和面向UML(統(tǒng)一建模語言)對象的程序設(shè)計,可以實現(xiàn)多數(shù)基本程序設(shè)計與算法設(shè)計的編程需要。為了對Raptor進行教學(xué)方法的創(chuàng)新與驗證,以1000以內(nèi)的完全數(shù)算法設(shè)計為例,該程序設(shè)計基本上分為9個步驟。如第一步為Loop循環(huán)程序,將n從2到1000進行調(diào)用,并進行判斷是否大于1000;第二步當(dāng)n小于1000時,將s作為因子的和;第三步以變量j進行Loop循環(huán)設(shè)計,當(dāng)j從2到n/2時,進行取值判定;……如此以來,對于本算法的程序設(shè)計,在系統(tǒng)執(zhí)行與運算上,需要進行百萬次運算比較,增加了運算成本。通過對本算法的分析,求解1000以內(nèi)的完全數(shù)具有明顯的步驟顯示性,可以將之應(yīng)有到Raptor流程圖設(shè)計中,來分析其算法的復(fù)雜度,進而可以估算出本程序的運算次數(shù)達到1124955.5次。在此基礎(chǔ)上,通過引入歐拉完全數(shù)獲得公式,當(dāng)滿足條件2P-1時判定為質(zhì)數(shù),則(2P-1)×2P-1的結(jié)果即是完全數(shù)。對上述算法程序設(shè)計進行優(yōu)化,可以在相同的數(shù)據(jù)范圍內(nèi),只需要執(zhí)行252次算法表達式,即可得到相同的結(jié)果,而與之前的算法相比,其計算效率提升近4000倍。由此可見,對于一般的程序設(shè)計來說,其復(fù)雜性可以通過Raptor流程圖設(shè)計進行檢驗和分析,并從計算思維上利用可視化軟件來實現(xiàn)改進和優(yōu)化,在這個過程中,學(xué)生可以從算法復(fù)雜性估算、驗證和優(yōu)化中來激活計算思維,來提升計算思維能力。

3 結(jié)語

利用Raptor可視化程序設(shè)計工具與程序設(shè)計課程的融合,便于將抽象的程序設(shè)計教學(xué)進行可視化呈現(xiàn),突出了教學(xué)直觀性,引導(dǎo)學(xué)生辨析程序設(shè)計的優(yōu)缺點,克服程序設(shè)計的迷惑與恐懼,增強了學(xué)生的學(xué)習(xí)興趣。Raptor可視化工具的運用,在激發(fā)學(xué)生程序設(shè)計計算思維上發(fā)揮了積極作用,一方面利用流程圖來模擬程序設(shè)計,另一方面從問題的提出、求解、探討、設(shè)計中來實現(xiàn)編程知識的內(nèi)化,強調(diào)學(xué)生計算思維的培養(yǎng),提升學(xué)生的編程水平。

參考文獻

[1]劉瓊,史諾,Tran Van Cuong.基于計算思維視角的程序設(shè)計教學(xué)改革研究[J].自動化與儀器儀表,2015(12).

[2]楊飛,陳浩強,劉方.基于計算思維的醫(yī)學(xué)計算機基礎(chǔ)教學(xué)探索[J].中國繼續(xù)醫(yī)學(xué)教育,2016(24).

篇5

1)計算機程序設(shè)計類課程體系設(shè)置不夠合理

目前,不少高校計算機專業(yè)程序設(shè)計類課程的設(shè)置,大一新生一進校,第一學(xué)期就開設(shè)C語言程序設(shè)計,或者C++程序設(shè)計,其理由是認(rèn)為學(xué)生在中學(xué)階段進行過信息技術(shù)教育和簡單的程序設(shè)計基礎(chǔ)訓(xùn)練。而結(jié)果呢,由于中學(xué)階段的信息技術(shù)教育在很多地區(qū)特別是農(nóng)村地區(qū)得不到重視,或者沒有全面的開展實施,學(xué)生剛?cè)氪髮W(xué)時對計算機的認(rèn)識和理解不夠深入,就進入了C語言或者C++語言程序設(shè)計的學(xué)習(xí),其教學(xué)效果很不理想。因此,學(xué)生對后續(xù)課程如《數(shù)據(jù)結(jié)構(gòu)》、《Java程序設(shè)計》等課程的學(xué)習(xí)也將受到很大影響,顯得很吃力,而且學(xué)習(xí)效果也比較差。

2)教育理念和教學(xué)方式不夠恰當(dāng)

程序設(shè)計類課程的教學(xué),如C語言程序設(shè)計或者C++程序設(shè)計,很多教師注重基本概念和語言的語法規(guī)則的教學(xué),在相應(yīng)的課程實驗中也只是對基本語法的訓(xùn)練,而忽略了對學(xué)生分析問題的方法、思想的培養(yǎng),學(xué)生的創(chuàng)新能力不強。因此,學(xué)生在學(xué)完一門程序設(shè)計類課程后,往往感覺到能閱讀程序,能讀懂程序,能理解別人寫的程序,可讓自己動手來編寫一個稍微復(fù)雜一點的程序,卻顯得很茫然,無從下手。

3)教學(xué)內(nèi)容的組織和安排不夠符合學(xué)生的認(rèn)知規(guī)律

學(xué)生對程序設(shè)計類課程的學(xué)習(xí),很大一部分同學(xué)是:翻開教材,課本中的程序個個都會,能看明白;閉上書,自己來重寫一下這些程序,錯誤百出。其原因還是由于教師在教學(xué)過程中沒有把握住學(xué)生的認(rèn)知規(guī)律,學(xué)生對課程知識理解不夠牢固[2-3]。如《C語言程序設(shè)計》課程的教學(xué)過程中,指針這一部分知識是安排在教學(xué)內(nèi)容的靠后章節(jié)講授,學(xué)時短,應(yīng)用少,但指針卻是這門課程的重點,后續(xù)課程中的應(yīng)用很多,學(xué)生對這一知識掌握不好,勢必影響后續(xù)《數(shù)據(jù)結(jié)構(gòu)》等課程的學(xué)習(xí)效果。

4)教材建設(shè)缺乏針對性,系統(tǒng)性

目前,很多普通高校計算機專業(yè)都還沒有編寫適合自己學(xué)生的教材,基本上都是使用高校計算機專業(yè)規(guī)劃系列教材,而程序設(shè)計類課程的教材很多,每本教材都有作者自己的內(nèi)容安排和章節(jié)設(shè)計方案,而且教材的選用也不固定,不同的授課教師常會選用不同的教材,這樣往往會有在程序設(shè)計類課程群的教材使用中,出現(xiàn)知識點和講授內(nèi)容的重復(fù)、教材的難度與學(xué)生的知識水平不符等問題,教材建設(shè)針對性和系統(tǒng)性差。

2計算機程序設(shè)計類課程教學(xué)改革方法及措施

1)調(diào)整計算機程序設(shè)計類課程體系

針對在現(xiàn)行的課程體系中,學(xué)生由于C語言或者C++程序設(shè)計的學(xué)習(xí)效果不理想,而導(dǎo)致對后續(xù)課程的學(xué)習(xí)受到很大的影響,應(yīng)將計算機專業(yè)程序設(shè)計類課程教學(xué)體系和課程設(shè)置進行調(diào)整。在大一第一學(xué)期開設(shè)《計算機導(dǎo)論》課程,目的是讓學(xué)生對計算機學(xué)科和計算機領(lǐng)域的研究內(nèi)容有初步的認(rèn)識,了解并掌握如數(shù)據(jù)在計算機中的存儲與表示、計算機工作原理、計算機基礎(chǔ)知識,計算機硬件系統(tǒng),計算機軟件系統(tǒng),多媒體技術(shù)基礎(chǔ),通信與網(wǎng)絡(luò)基礎(chǔ)等方面的知識。[4]在此基礎(chǔ)之上,大一第二學(xué)期開設(shè)《程序設(shè)計基礎(chǔ)》課程,講授內(nèi)容可以是C語言程序設(shè)計或C++程序設(shè)計,目的是進行程序邏輯訓(xùn)練,讓學(xué)生掌握程序的基本結(jié)構(gòu)和程序調(diào)試基本技能。在學(xué)生掌握了基本的程序設(shè)計基礎(chǔ)之后,再開設(shè)《高級程序設(shè)計技術(shù)》課程,重在培養(yǎng)學(xué)生程序設(shè)計方法和思想,其教學(xué)內(nèi)容是程序設(shè)計中的一些高級處理技術(shù),如數(shù)據(jù)類型、指針的高級應(yīng)用,文件的操作,圖形界面與動畫設(shè)計,鍵盤與鼠標(biāo)操作,以及一些典型算法應(yīng)用。在學(xué)生掌握了程序設(shè)計能力和程序設(shè)計思想方法基礎(chǔ)上,再先后開設(shè)《數(shù)據(jù)結(jié)構(gòu)》、《Java程序設(shè)計》課程。《數(shù)據(jù)結(jié)構(gòu)》課程是培養(yǎng)學(xué)生根據(jù)實際問題的要求有效地組織、存儲、處理數(shù)據(jù)的能力;《Java程序設(shè)計》貫穿面向?qū)ο蟪绦蛟O(shè)計新理念,讓學(xué)生掌握面向?qū)ο蟪绦蛟O(shè)計思想和技術(shù)。在高年級,針對不同的專業(yè)方向,還可開設(shè)VC++、C#、LINX等程序設(shè)計類選修課程,提高學(xué)生的編程水平和實踐能力,以滿足社會對軟件人才的不同需求。這樣,就形成了“基礎(chǔ)訓(xùn)練+方法培養(yǎng)+提高能力+拓展層面+實踐應(yīng)用”的程序設(shè)計教學(xué)新模式和程序設(shè)計類課程新體系。

2)改革教育理念和教育教學(xué)方式

程序設(shè)計類課程的課堂理論教學(xué)中,采用案例教學(xué)法可以取得較好的教學(xué)效果,可將一個較復(fù)雜的項目分解到各章節(jié)去講授介紹。如在《程序設(shè)計基礎(chǔ)》課程教學(xué)過程中,我們使用了一個學(xué)生成績管理程序項目案例,在講授數(shù)組這一部分知識時,就可以將這個案例引入進來,介紹為什么要使用數(shù)組來存儲多個學(xué)生的成績,要對學(xué)生成績排序應(yīng)該怎么辦;當(dāng)課程進行到函數(shù)這一章時,引入了案例中的模塊設(shè)計思路,介紹為什么要將項目分解為成績錄入、成績排序、成績查找、成績統(tǒng)計等多個模塊,模塊之間如何去調(diào)用;當(dāng)課程繼續(xù)進行到結(jié)構(gòu)體這一章時,讓學(xué)生分析理解案例中,學(xué)生的信息不僅包含成績,還包含姓名、學(xué)號時應(yīng)該怎樣處理;講授到文件這一章時,讓學(xué)生理解要將案例中的學(xué)生成績等信息存儲到一個文件中去,怎樣去實現(xiàn)。這樣,通過這一個完整的案例貫穿到整個課程的學(xué)習(xí),不僅能使學(xué)生掌握課程中的基本知識,也能讓學(xué)生直觀的感受到一個復(fù)雜項目的設(shè)計過程。

3)改善教學(xué)內(nèi)容的組織和安排

在程序設(shè)計類課程的教學(xué)過程中,我們將教學(xué)內(nèi)容進行了調(diào)整和重新組織。在《程序設(shè)計基礎(chǔ)》課程的教學(xué)過程中,將指針這一部分知識分散到各個章節(jié)去講授,在講到變量定義時,就引入地址和指針的概念,講到數(shù)組和函數(shù)部分時,將指針的應(yīng)用也同時在案例中進行講授,這樣,同學(xué)們也很容易接受和消化理解。在《高級程序設(shè)計技術(shù)》課程教學(xué)中,不講授語言的基本知識,只講授指針、文件、圖形界面、動畫、鍵盤、鼠標(biāo)等的高級應(yīng)用操作和設(shè)計。《數(shù)據(jù)結(jié)構(gòu)》課程中,講授各種抽象數(shù)據(jù)類型的定義,及相應(yīng)的算法設(shè)計。在《Java程序設(shè)計》課程教學(xué)中,重在培養(yǎng)學(xué)生面向?qū)ο蟪绦蛟O(shè)計思想和編程技術(shù),對教材中的基礎(chǔ)知識部分如常量、變量、數(shù)據(jù)類型、數(shù)組等進行略講或不講,只是在應(yīng)用中進行簡單介紹該注意的問題,這樣,就可以將更多地學(xué)時放在對學(xué)生面向?qū)ο缶幊趟枷氲呐囵B(yǎng)上。

4)加強課程和教材建設(shè)

在程序設(shè)計類課程群教材建設(shè)方面,應(yīng)該有區(qū)別的選取具有系統(tǒng)性的、適合自己學(xué)生水平的高質(zhì)量教材,或者課程群相關(guān)教師合作編寫出版教材或講義,這不僅使課程群中的課程教學(xué)內(nèi)容具有系統(tǒng)性,也適合自己學(xué)生的認(rèn)知水平,具有較強的針對性,同時,授課教師也能熟練駕馭教材和授課內(nèi)容。近年來,我校計算機專業(yè)程序設(shè)計類課程群教師編寫出版了《程序設(shè)計基礎(chǔ)》、《數(shù)據(jù)結(jié)構(gòu)》教材和相配套的習(xí)題冊,教學(xué)效果有了明顯提高。

3結(jié)束語

篇6

關(guān)鍵詞 程序設(shè)計教學(xué) C語言 C++ Visual C++.NET

1 引言

筆者多年來一直在高校從事計算機科學(xué)技術(shù)的教學(xué)和研究工作,在長期的實踐中深刻認(rèn)識到,計算機程序設(shè)計是計算機專業(yè)的基礎(chǔ)課,熟練掌握計算機程序設(shè)計也是學(xué)生將來從事計算機技術(shù)應(yīng)用研究所應(yīng)具備的基本素質(zhì)。然而,程序設(shè)計技術(shù)水平的提高,僅僅靠一兩門程序設(shè)計課程是不夠的。只有經(jīng)歷了計算模型與算法理論、若干語言(含微程序設(shè)計和匯編語言程序設(shè)計)的程序設(shè)計、程序設(shè)計方法學(xué)、程序理論與軟件開發(fā)方法學(xué)、軟件工程以及其他相關(guān)課程的學(xué)習(xí)以后,并經(jīng)過大量實踐,才能真正大幅度、整體性地提高程序設(shè)計水平。我們在這里所討論的面向?qū)ο蟪绦蛟O(shè)計,是在學(xué)習(xí)了某種高級語言(如:C語言或Pascal語言)之后所要學(xué)習(xí)的一門課程。為了提高面向?qū)ο蟪绦蛟O(shè)計的教學(xué)水平和培養(yǎng)學(xué)生的程序設(shè)計能力,既要考慮計算機軟件設(shè)計發(fā)展的方向和需要,又要重視采用科學(xué)、合理和先進的教學(xué)模式,并實施相應(yīng)的教學(xué)內(nèi)容和教學(xué)方法。下面針對這些問題談?wù)劰P者的看法。

2 充分認(rèn)識面向?qū)ο蟪绦蛟O(shè)計的特點

隨著程序設(shè)計學(xué)科的發(fā)展,程序設(shè)計思想經(jīng)歷了從簡單的順序計算到結(jié)構(gòu)化的程序設(shè)計,再到面向?qū)ο蟮某绦蛟O(shè)計的發(fā)展過程,形成了一整套的思想理論和設(shè)計方法。目前看來,面向?qū)ο蟪绦蛟O(shè)計方法比較接近人們表達事物和解決問題的思維方法,其特點如下。

(1)具有靜態(tài)屬性和動態(tài)行為的對象與客觀世界的實體比較相象,面向?qū)ο蟮某绦蚰軌虮容^自然地模擬客觀世界,從而使得解空間與問題空間在結(jié)構(gòu)上盡可能一致。

(2)應(yīng)用面向?qū)ο蠹夹g(shù)來分析、設(shè)計和實現(xiàn)軟件系統(tǒng)的過程與人們認(rèn)識客觀世界、解決實際問題的過程比較一致。

(3)對象的封裝性,降低了程序的復(fù)雜性;對象的繼承性,增加了程序設(shè)計的可重復(fù)使用性;對象的多樣性,增強了程序設(shè)計的靈活性。由此可以明顯提高軟件開發(fā)與維護的效率,降低軟件的總成本。

應(yīng)用這些特點,人們在程序設(shè)計時首先要考慮系統(tǒng)有哪些需要處理的“數(shù)據(jù)”或者“對象”,進一步分析這些對象包含了哪些信息,以及處理這些信息所需要的方法。也就是說,找出對象、正確地描述對象、分析對象與對象之間的關(guān)系以及采用計算機語言來構(gòu)建系統(tǒng)等工作,這是面向?qū)ο蟪绦虻姆治雠c設(shè)計的方法。

近年來,面向?qū)ο蟮募夹g(shù)越來越受到人們的重視,對它的應(yīng)用和研究遍及計算機軟件和硬件的各個領(lǐng)域,國內(nèi)高校普遍開設(shè)了面向?qū)ο蟪绦蛟O(shè)計之類的課程。

3 明確選擇屬于主流方向的程序設(shè)計語言

面向?qū)ο蟪绦蛟O(shè)計語言很多,在IT行業(yè)中最為流行的如:C++、Java和Delphi等語言,而我們的教學(xué)中選擇了C++,其理由如下。

(1)C語言成為程序設(shè)計入門的主導(dǎo)語言。由于C語言在當(dāng)今系統(tǒng)軟件和部分應(yīng)用軟件的開發(fā)中具有實用性強的特點,又與硬件和程序設(shè)計環(huán)境底層的聯(lián)系緊密,所以當(dāng)學(xué)生具備了一定的數(shù)學(xué)基礎(chǔ)和計算機操作實驗基礎(chǔ)后,首先認(rèn)可在某種計算模型(如隨機存儲計算模型)和軟件技術(shù)(如編譯技術(shù))的支持下,通過C語言的各種基本成分及其功能的了解,學(xué)習(xí)如何組合各種語言成分來編制完成某項計算的程序,然后完成對某些計算方法和算法的具體實現(xiàn),從中體會計算機在處理大量計算問題時如何從過程的角度完成具體計算,從而為學(xué)習(xí)其他計算機基礎(chǔ)課程打好基礎(chǔ)。

(2)C++與C語言有不可分割的親情關(guān)系。C++是在C語言的基礎(chǔ)上演變而來的一種程序設(shè)計語言,它不是簡單地對C語言作了某些改進,而是在C語言成功的基礎(chǔ)上進行了一場革命。C++語言的創(chuàng)建初衷是“a better C”,但是這并不意味著C++中類似C語言的全局變量和函數(shù)所采用的編譯及連接方式與C語言完全相同。作為一種欲與C兼容的語言,C++保留了一部分過程式語言的特點,因而它可以定義為不屬于任何類的全局變量和函數(shù)。但是,C++畢竟是一種面向?qū)ο蟮某绦蛟O(shè)計語言,為了支持函數(shù)的重載,C++對全局函數(shù)的處理方式與C有明顯的不同。在C++教學(xué)中,重點介紹有關(guān)面向?qū)ο蟮幕靖拍睢⒒痉椒ê突炯夹g(shù),重點介紹兩種語言之間的不同之處,從而實現(xiàn)了程序設(shè)計思想、方法和技術(shù)從面向過程平穩(wěn)過渡到變?yōu)槊嫦驅(qū)ο螅瑴p小了C++的學(xué)習(xí)難度。

(3)C++可以很容易延伸到其他語言。與C++接近的有Java語言和C#(C Sharp)語言,它們的基本語句大致相同,其功能主要是開發(fā)B/S結(jié)構(gòu)的分布式系統(tǒng)。學(xué)習(xí)這些語言的時候,在C++語言的基礎(chǔ)上,從語言理論(只引用結(jié)論而不展開論述)和語言比較學(xué)的角度出發(fā),放棄語言的共性,重點學(xué)習(xí)對應(yīng)語言的個性,這樣達到事半功倍的效果。同時引出由于程序設(shè)計方法和技術(shù)的發(fā)展以及高級語言進一步發(fā)展帶來的需要在程序設(shè)計語言中解決的問題,如組件、網(wǎng)頁以及通信等應(yīng)用方面的設(shè)計,向?qū)W生適當(dāng)展示高級語言與程序設(shè)計廣闊的天地,為后續(xù)相關(guān)課程埋下伏筆。

4 注重提高面向?qū)ο蟮某绦蛟O(shè)計水平

在引導(dǎo)學(xué)生從面向過程程序設(shè)計到面向?qū)ο蟪绦蛟O(shè)計的轉(zhuǎn)變過程中,對于面向?qū)ο蟮囊恍┗靖拍睿ㄈ珙悺ο蟆⒎庋b、繼承和多態(tài)),通過同現(xiàn)實生活的事物相對比,學(xué)生還是很容易理解的。但是,如何將這些概念應(yīng)用到面向?qū)ο蟪绦蛟O(shè)計中,剛開始對于學(xué)生來說還是有一定的難度。為了克服這個難題,我們在C++語言的教學(xué)中注重了以下幾方面內(nèi)容。

(1)從程序設(shè)計的角度理解面向?qū)ο蟮幕靖拍睢@鐚ο蟮姆庋b性,我們可以認(rèn)為是一種把代碼和代碼所操作的數(shù)據(jù)捆綁在一起,使這兩者不受外界干擾和誤用的機制。.封裝可被理解為是一種用做保護的包裝器,以防止代碼和數(shù)據(jù)被包裝器外部所定義的其他代碼任意訪問。對包裝器內(nèi)部代碼與數(shù)據(jù)的訪問通過一個明確定義的接口來控制。封裝代碼的好處是每個人都知道怎樣訪問代碼,而無需考慮實現(xiàn)細節(jié)就能直接使用它,同時不用擔(dān)心不可預(yù)料的副作用。在面向?qū)ο蟮某绦蛟O(shè)計中,最基本的封裝單元是類,一個類定義了由一組對象所共享的行為(數(shù)據(jù)和代碼)。一個類的每個對象均包含它所定義的結(jié)構(gòu)與行為,這些對象就好像是一個模子鑄造出來的一樣,所以對象也叫做類的實例。對于類的封裝程度,也是有選擇的。類提供關(guān)鍵字public、protected 和private,用于聲明哪些數(shù)據(jù)和函數(shù)是公有的、受保護的或者是私有的,用以控制類的封裝程度,公有的數(shù)據(jù)和函數(shù)公開必須要讓外界知道的內(nèi)容,而隱藏的是私有的一切內(nèi)容。對于對象的繼承性,是指一個對象從另一個對象中獲得屬性的過程,它支持按層次分類的概念。如果不使用層次的概念,每個對象需要明確定義各自的全部特征。通過層次分類方式,一個對象只需要在它的類中定義屬于它的個性,然后從父類中繼承它的共性。因此,正是由于繼承機制,才使得一個對象可以成為一個通用類的一個特定實例。當(dāng)然,類的繼承方式,C++提供了公有和私有的兩種選擇。

(2)培養(yǎng)面向?qū)ο蠹夹g(shù)分析的抽象思維。抽象是程序設(shè)計的基本要素,程序設(shè)計者通過抽象描述來實現(xiàn)軟件系統(tǒng)。抽象描述的有效方法是使用層次式的分類特性,這種方法允許用戶根據(jù)物理含義分解一個復(fù)雜的系統(tǒng),把它劃分成更容易實現(xiàn)的塊。例如,一個計算機系統(tǒng)是一個獨立的對象,而在計算機系統(tǒng)內(nèi)部由幾個子系統(tǒng)組成:顯示器、鍵盤、硬盤驅(qū)動器、DVD-ROM、軟盤、音響等,這些子系統(tǒng)每個又由專門的部件組成。在程序設(shè)計中,其中抽象是自頂向下地逐步求精和模塊化。自頂向下地逐步求精是指首先要對所設(shè)計的系統(tǒng)有一個全面的理解,其次從頂層開始連續(xù)地逐層向下分解,直到系統(tǒng)的所有模塊都被分解為一條條的詳細指令時為止。模塊化是指把一個大的程序按照一定的原則劃分為若干個相對獨立但又相互關(guān)聯(lián)的實體,這些實體就是我們所面向的對象,它們用類來描述定義。

(3)訓(xùn)練面向?qū)ο笤O(shè)計的邏輯思維。程序設(shè)計的過程也就是對學(xué)生的思維進行訓(xùn)練的過程。在許多常規(guī)學(xué)科的日常教學(xué)中我們不難發(fā)現(xiàn)這樣一個現(xiàn)象,不少學(xué)生的思維常常處于混亂的狀態(tài)。寫起文章來前言不搭后語,令人不知所云;解起數(shù)學(xué)題來步驟混亂,搞不清因果關(guān)系。這些都是缺乏邏輯思維訓(xùn)練的結(jié)果。程序設(shè)計的訓(xùn)練不僅可以讓學(xué)生養(yǎng)成良好的程序設(shè)計習(xí)慣,而且可以有效地培養(yǎng)學(xué)生思維的條理性和邏輯性。

(4)幫助學(xué)生樹立系統(tǒng)工程觀點。在計算機行業(yè)中,軟件的設(shè)計已經(jīng)用工程的觀念來進行管理。軟件設(shè)計不再被認(rèn)為是手工作坊里的個體勞動,而是被當(dāng)作一項系統(tǒng)工程。軟件工程的復(fù)雜程度不低于甚至高于諸如建筑工程等其他行業(yè)的工程。隨著社會信息化進程的不斷加速,計算機應(yīng)用走進各行各業(yè)是大勢所趨,社會需要大量的計算機高等人才,從而對我們的計算機教育提出了更高要求。我們知道,程序設(shè)計是計算機專業(yè)的基礎(chǔ),應(yīng)該從一開始使學(xué)生養(yǎng)成一個好習(xí)慣,樹立正確的軟件工程觀點。這樣做不僅可以為學(xué)生將來從事計算機應(yīng)用打下良好的基礎(chǔ),而且有利于提高學(xué)生統(tǒng)籌全局、協(xié)調(diào)關(guān)系的基本能力。

5 大力強化面向?qū)ο蟮目梢暬绦蛟O(shè)計方法

目前,程序設(shè)計的觀念發(fā)生了顯著變化,可視化(Visual)技術(shù)廣泛用于各種程序設(shè)計過程,就拿C++來說,就有C++ Builder和Visual C++不同的可視化程序設(shè)計語言。這些可視化語言,它們以其圖形化的編程方式將面向?qū)ο蠹夹g(shù)的特性完美地體現(xiàn)出來,使得開發(fā)軟件這一原本枯燥、難以理解的工作變得輕松快捷。作為專業(yè)人員不懂得可視化編程技術(shù)將無法在競爭激烈的計算機行業(yè)中立足,作為計算機學(xué)科的教師不傳授可視化編程技術(shù)將難以滿足學(xué)生強烈的求知欲望。

從整個IT產(chǎn)業(yè)的軟件市場來講,如果要開發(fā)高性能的Windows或萬維網(wǎng)(WWW)應(yīng)用程序,Visual C++是一種效率較高的開發(fā)工具,幾乎所有世界級的軟件都是使用Visual C++開發(fā)系統(tǒng)完成的。在2002年初,微軟公司又推出了Visual C++的最新版本――Visual C++.NET,它繼承了以往Visual C++各版本的優(yōu)點,增加了許多新的特性,使得開發(fā)的能力更強、開發(fā)的效率更高,深受業(yè)內(nèi)人士青睞,所以我們選擇了Visual C++.NET作為可視化程序設(shè)計語言。

在學(xué)習(xí)掌握C++語言的基礎(chǔ)上,講授Visual C++.NET需要重點突出以下內(nèi)容。

(1)MFC(Microsoft Foundation Class,微軟基本類庫)。MFC是微軟公司為Windows程序員提供的一個面向?qū)ο蟮腤indows編程接口,使用它進行Windows應(yīng)用程序開發(fā)具有很大的優(yōu)越性。首先,MFC提供了一個標(biāo)準(zhǔn)化的結(jié)構(gòu),開發(fā)人員不必從頭設(shè)計創(chuàng)建和管理一個標(biāo)準(zhǔn)Windows應(yīng)用程序所需的程序,而是“站在巨人肩膀上”,充分利用Microsoft開發(fā)人員多年開發(fā)Windows程序的經(jīng)驗,并可以將這些經(jīng)驗融入到用戶自己開發(fā)的應(yīng)用程序中去。我們知道,雖然程序設(shè)計者要編寫的程序在功能上是千差萬別的,但從本質(zhì)上來講,都可以歸納為用戶交互界面的設(shè)計、輸入輸出文件的操作、多媒體技術(shù)的應(yīng)用以及數(shù)據(jù)庫的訪問等一些最常用的技術(shù)。這一點正是微軟提供MFC類庫的最重要原因,在這個類庫中包含了一百多個程序開發(fā)過程中最常用到的類。在進行程序設(shè)計的時候,如果類庫中的某個類具有我們所需要的功能,這時我們只要簡單地引用該類產(chǎn)生對應(yīng)對象,然后通過對象調(diào)用有關(guān)方法就可以了。我們還可以利用面向?qū)ο蠹夹g(shù)中很重要的“繼承”方法從類庫中的已有類派生出我們自己的類,該類繼承了父類的特性和功能,實現(xiàn)了代碼重用,并在此基礎(chǔ)上還可以根據(jù)自己需要加上所需的特性和方法,從而可以快速設(shè)計出一個更專業(yè)的、功能更強大的類。

(2)消息處理機制。Windows操作系統(tǒng)環(huán)境下運行的交互式應(yīng)用程序,不論采用那一種開發(fā)工具,它都具有以消息為基礎(chǔ)、由事件驅(qū)動的運行機制。事件是外部強加于應(yīng)用程序的操作動作,它們有可能來自系統(tǒng),也有可能來自用戶。操作系統(tǒng)將捕捉到的事件,按事件的類型和來源采用相應(yīng)的數(shù)據(jù)結(jié)構(gòu)描述事件,這種形式稱為消息。操作系統(tǒng)將事件翻譯成消息之后,接著將消息分發(fā)到消息隊列中,等待應(yīng)用程序索取并處理。在Visual C++.NET中,消息可分為窗口消息、命令消息、控件消息和交互對象更新消息,這些不同類型的消息各自都有對應(yīng)的處理方式。熟悉消息的處理方式和靈活應(yīng)用消息,對于學(xué)生設(shè)計交互式應(yīng)用程序至關(guān)重要,因為設(shè)計的大多數(shù)時間是充分利用各種消息,編寫它們對應(yīng)的處理函數(shù)。如果忽視了消息處理機制內(nèi)容,學(xué)生編程序或者無從下手,或者功能簡單。

(3)主要應(yīng)用程序類型的程序結(jié)構(gòu)。Visual C++.NET提供了良好的開發(fā)應(yīng)用程序向?qū)В谙驅(qū)У闹敢拢梢宰詣由蓡挝臋n、多文檔、對話框和多頂級文檔等四種標(biāo)準(zhǔn)類型的應(yīng)用程序結(jié)構(gòu),對應(yīng)結(jié)構(gòu)都是由MFC中的基類派生的類組成的。在教學(xué)過程中,深入剖析這四種應(yīng)用程序結(jié)構(gòu),有助于提高學(xué)生的軟件開發(fā)能力。例如多文檔應(yīng)用程序結(jié)構(gòu)目前使用越來越普遍,人們熟悉的Microsoft公司的Office系列產(chǎn)品以及Visual系列產(chǎn)品都是典型的多文檔應(yīng)用程序。這種多文檔界面具有多窗口的特點,因而人們可以在一個程序中使用多個子窗口來實現(xiàn)不同數(shù)據(jù)的瀏覽查看。一般情況下,這四種結(jié)構(gòu)可以滿足絕大多數(shù)用戶的要求,但有時用戶也可以通過重載一些函數(shù)來修改其缺省的風(fēng)格,從而在此結(jié)構(gòu)基礎(chǔ)上設(shè)計加工具有自己個性的應(yīng)用程序。

(4)對話框的數(shù)據(jù)交換機制。對話框是應(yīng)用程序的主要交互方式,它作為一種容器,包含了用于輸入輸出信息和控制操作的控件,并且大多數(shù)控件都有對應(yīng)的內(nèi)存變量。Visual C++.NET對于實現(xiàn)控件和變量之間的數(shù)據(jù)交換有自己的一套獨特機制,熟悉這種機制有助于學(xué)生深刻理解輸入輸出數(shù)據(jù)的來龍去脈。

以上內(nèi)容如果讓學(xué)生自學(xué)是有一定的難度,所以希望老師重點講解這些內(nèi)容,以便學(xué)生自學(xué)繪圖、數(shù)據(jù)庫操作和網(wǎng)絡(luò)編程等有關(guān)專題技術(shù)。

6 結(jié)束語

目前,計算機程序設(shè)計方法在不斷地更新,當(dāng)我們講授面向?qū)ο蟮某绦蛟O(shè)計方法時,面向組件和面向服務(wù)的新方法就已經(jīng)產(chǎn)生了。在這種情況下,是不是說面向?qū)ο蟮某绦蛟O(shè)計方法過時?我認(rèn)為并不見得過時。就像我們應(yīng)用面向?qū)ο蟮脑O(shè)計方法時還得應(yīng)用面向過程的設(shè)計方法(如設(shè)計消息處理函數(shù))一樣,面向組件和面向服務(wù)的新方法是在面向?qū)ο蟮幕A(chǔ)上發(fā)展產(chǎn)生的,服務(wù)是組件的容器,組件是對象的容器,最基本的內(nèi)核還是對象,只不過從軟件體系結(jié)構(gòu)的角度來講,服務(wù)和組件相對于對象來說,是形成體系結(jié)構(gòu)的更大力度的結(jié)構(gòu)元素。所以說,講授好面向?qū)ο蟪绦蛟O(shè)計方法,是為將來學(xué)習(xí)面向組件和面向服務(wù)的程序設(shè)計方法打基礎(chǔ)。

參考文獻

[1] 譚浩強.C程序設(shè)計(第二版)[M].清華大學(xué)出版社,2001,8.

[2] 鄭莉,董淵.C++語言程序設(shè)計(第二版)[M].清華大學(xué)出版社,2002,1.

篇7

關(guān)鍵字:“提問-引導(dǎo)-探究性” 程序設(shè)計 循環(huán)語句 網(wǎng)絡(luò)教學(xué)資源 程序優(yōu)化

一 引言

(一)問題的提出

由于學(xué)生剛接觸程序設(shè)計,很難把數(shù)學(xué)知識融入到循環(huán)結(jié)構(gòu)的運用中,通常在學(xué)習(xí)中對書本上提供的程序容易理解,但只要把條件和要求略加變更或者在獨立解決一些實際問題,這時學(xué)生表現(xiàn)為應(yīng)變能力低,編程實現(xiàn)也就有點困難。

(二)解決問題的思路

思維是活躍的,程序是變化的,程序設(shè)計不能僵化于一種講授模式,重在“啟發(fā)引導(dǎo)”,就是呈現(xiàn)層次分明的“提問”內(nèi)容,再結(jié)合問題的具體實際,因勢利導(dǎo),最終“引導(dǎo)”學(xué)生自己來“探究”完成任務(wù)。實踐證明,充分運用“提問-引導(dǎo)-探究性”教學(xué)模式來加強程序設(shè)計教學(xué)中的引導(dǎo),是提高程序設(shè)計能力與解決實際問題的應(yīng)變能力的有效途徑。

二 實踐

在課程改革和信息技術(shù)與學(xué)科課堂整合的今天,教師是教學(xué)資源的提供者、研究探索的引導(dǎo)者。除了引導(dǎo)式的展示不同階段學(xué)生思考的不同問題、提供必要的多媒體信息資源之外,還要指導(dǎo)學(xué)生依托信息技術(shù)所提供的豐富網(wǎng)絡(luò)教學(xué)資源進行研究、討論和發(fā)表見解的,拓展式、開放性的學(xué)習(xí)。在循環(huán)結(jié)構(gòu)的教學(xué)中,我充分運用“提問-引導(dǎo)-探究性”的教學(xué)模式,循序漸進地提出層次性的問題,從而實現(xiàn)引導(dǎo)變通,這時,師生一起進入"聊天室"進行知識問答、交流談心、專題探討等活動(這種聊天式的討論本身就是一種學(xué)習(xí)活動)。學(xué)生在交流探討的過程中發(fā)展思維,學(xué)習(xí)新知,培養(yǎng)技能,提高漢字輸入速度。具體實施如下:

(一)改變語句中的變量,加強語句的理解與應(yīng)用

在程序設(shè)計的初始階段,學(xué)生對某些語句的功能還不甚了解的實際,求和求積等基本問題入手,在及時糾正初編程序時所出現(xiàn)的語法錯誤和邏輯錯誤的基礎(chǔ)上,引導(dǎo)對已編程序的某些語句或語句中的某些變量作力所能及的變通,以加強對語句的理解與應(yīng)用的基本功。

呈現(xiàn)“求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.

要求學(xué)生關(guān)注以下三個問題:

1、循環(huán)中的循環(huán)變量是什么,其初值、終值分別為多少?

2、放累加和的變量是什么?每次的累加項是什么?

3、請注意累加項和累加和的值是如何變化的。

學(xué)生上機調(diào)試、分組討論、結(jié)合網(wǎng)絡(luò)資源,師生問答等方式來完成。學(xué)生解答這三個問題的過程,其實是對所學(xué)的變量、循環(huán)等概念的進一步理解、說明和歸納的思維過程。但并不意味著學(xué)生對程序的每個語句的功能清楚了。為了加深對賦值語句和循環(huán)語句的執(zhí)行過程的理解,在這一簡單程序基礎(chǔ)上可引導(dǎo)學(xué)生做以下變化練習(xí):

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

這種一題多變,一例多用的練習(xí)使學(xué)生從單純的模仿階段,通過自己的觀察、對比、聯(lián)系和想象,過渡到獨立應(yīng)用所學(xué)的概念和規(guī)則,靈活地、舉一反三地、獨創(chuàng)性解決問題,鍛煉了學(xué)生思維能力,使其在思維的靈活性、批判性、深刻性、創(chuàng)新性方面都有所提高。通過以上一系列角度不同的變通,學(xué)生對每一個語句的認(rèn)識深刻了,對語句中每一個變量的確定謹(jǐn)慎了。

引導(dǎo)對語句變量的改變,必須目的明確,同時,變化還要注意控制難度,先易后難,逐步深入,把引導(dǎo)與示范,引導(dǎo)與評價,引導(dǎo)與糾錯有機結(jié)合起來。

(二)采用不同的程序設(shè)計方法,進一步認(rèn)識語句與程序結(jié)構(gòu)

循環(huán)結(jié)構(gòu)的理解與運用是程序設(shè)計的基礎(chǔ),因此在學(xué)完循環(huán)基本結(jié)構(gòu)的三種語句(for/repeat……until/while)后,為了加深對三種語句的理解,做到靈活應(yīng)用,在處理程序設(shè)計時引導(dǎo)學(xué)生采用不同的方法進行設(shè)計,加強橫向聯(lián)系,啟發(fā)學(xué)生自己進行總結(jié),達到理想的教學(xué)效果。

呈現(xiàn) “N!=1*2*3*……*10”例子:

先采用for語句設(shè)計發(fā)如下:

Program cbh2;

var

i,n:longint;

Begin

n:=1;

for i:=1 to 10do

n:=n*i;

witeln(n,'!=',n);

readln

End.

提出使用其它兩種循環(huán)結(jié)構(gòu)應(yīng)該怎樣設(shè)計?

學(xué)生經(jīng)過探究、分組討論、聊天室交流、程序調(diào)試、師生總結(jié)如下程序:

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.

然后引導(dǎo)學(xué)生對三個程序進行比較,得出決定循環(huán)終止的條件是布爾表達式,同時得出不同循環(huán)結(jié)構(gòu)的布爾表達式關(guān)系。

又呈現(xiàn)“求出下式中n的最大值:s=12+22+32……+n2

先向?qū)W生提問:用什么循環(huán)語句來設(shè)計程序?

通過討論,學(xué)生自己得出結(jié)論:

1、用for語句無法設(shè)計;

2、只能使用repeat……until與while兩種循環(huán)設(shè)計;

3、同時再次對repeat……until和while 兩種循環(huán)中的布爾表達式之間的關(guān)系有進一步的認(rèn)識;

正確的程序如下:

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.

最后小組得出結(jié)論:三種語句實現(xiàn)循環(huán)結(jié)構(gòu),即for語句,while語句和repeat……until語句, 對于能確定循環(huán)次數(shù)且可利用一個簡單循環(huán)控制變量(只能使用順序類型數(shù)據(jù))時,使用for語句最合適了;對于循環(huán)次數(shù)不能預(yù)先確定,宜使用while或repeat……until語句,但while 語句適用于有可能根據(jù)條件判斷使其成為空語句的情況,而repeat……until 語句適用于不論什么條件至少要執(zhí)行一次循環(huán)體的情況。

通過如此的引導(dǎo),使學(xué)生對循環(huán)結(jié)構(gòu)的三條語句使用得心應(yīng)手,在編程過程中能夠靈活應(yīng)用;同時也培養(yǎng)了學(xué)生發(fā)散性思維。

(三)改變程序結(jié)構(gòu),達到程序優(yōu)化

在掌握了基本語句的準(zhǔn)確使用與簡單程序編寫的要領(lǐng)之后,要引導(dǎo)學(xué)生從“按步思維到靈活思維”的轉(zhuǎn)變,注意從程序的結(jié)構(gòu)與設(shè)計思路上考慮變通,培養(yǎng)結(jié)構(gòu)化和優(yōu)化的意識,迅速提高編程能力。

一個程序設(shè)計出來了,不能滿足于沒有語法錯誤,能上機通過等起碼要求,有必要引導(dǎo)學(xué)生從以下幾個方面作一些深層次的思考:

1、程序的結(jié)構(gòu)是否合理?

2、程序的設(shè)計思路是否清晰?

3、程序占用的機器空間與時間是否合適?

4、能不能作進一步的優(yōu)化?

呈現(xiàn)“S =1-1/2+1/3-1/4+……+1/99-1/100”例子。

表達式中各項正負相間,基本的設(shè)計思路是把右邊表達式分成正與負兩組考慮,可以用兩組雙重循環(huán)來實現(xiàn),這樣做,思路顯然比較簡單但程序的編碼較多,結(jié)構(gòu)也顯復(fù)雜。能不能把兩組雙重循環(huán)簡化為一組單重循環(huán)來實現(xiàn)呢?可引導(dǎo)學(xué)生使用一個符號變量f解決正負符號相間,設(shè)計出結(jié)構(gòu)非常簡明的程序:

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.

運行此程序會發(fā)現(xiàn)結(jié)果為1,為什么?引導(dǎo)學(xué)生自己分析,尋找原因,最后學(xué)生發(fā)現(xiàn):感覺從第2項開始就沒有參與運算,由于程序的說明部分,t是整型數(shù),t無法等與一個分式的值(實型),始終為0。改程序的說明部分中的n為實型數(shù)即可。

這一設(shè)計打破了原來的正負分組的模式,從而優(yōu)化了程序。

從設(shè)計思路,引導(dǎo)學(xué)生程序結(jié)構(gòu)上變通,目的是培養(yǎng)程序的優(yōu)化意識,尋求程序的優(yōu)化途徑,通過變通,具體建立程序的可讀性比較,運行時間與占用空間的比較,結(jié)構(gòu)化比較等優(yōu)化概念,自然,對程序結(jié)構(gòu)的變通較之前面對程序中某些語句某些變量的變通要深一個層次,要求更高,涉及面更廣,因此,在變通的引導(dǎo)上要做到具體、細致,切忌簡單了事,操之過急。

(四)構(gòu)造合理算法,提高編程解決實際問題的能力。

算法是程序設(shè)計的依據(jù)。確定合理的算法是編程解決實際問題的前提與關(guān)鍵。引導(dǎo)對算法的變通,包括遞歸、搜索、迭代、遞推、模擬等基本算法的改造,傳統(tǒng)算法的推陳出新,必須緊密聯(lián)系具體問題的實際。

呈現(xiàn)“一個整數(shù)的每位數(shù)字都是1,至少多少位才能使這個數(shù)被13整除呢?”例子。

這是一個有趣的實際問題,一般考慮的,無非是整除,一個個進行試商檢驗是基本的算法,一些學(xué)生往往“躍躍欲試”地編出程序:

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.

在程序調(diào)試運行受阻之后,就要啟發(fā)學(xué)生分析算法上的問題:當(dāng)a的位數(shù)超過定義的整型數(shù)范圍后,程序出錯,然后引導(dǎo)學(xué)生思考:如果不用計算機,怎么求解?讓學(xué)生在寫出幾步整數(shù)除法的豎式的基礎(chǔ)上進行模擬尋求模擬變量(被除數(shù)、余數(shù)、商)建立模擬循環(huán),從而設(shè)計出簡練可行的程序:

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.

由于以上程序中每次作整除運算所得的余數(shù)b要小于13,因此下一次的被除數(shù)B*10+1(體現(xiàn)增加一個“1”)不超出整數(shù)的范圍,可確保整除的實現(xiàn)。可見, 算法的變通,有時直接關(guān)系到程序設(shè)計的成敗。

三 總結(jié)

所謂“提問-引導(dǎo)-探究性”教學(xué)模式,就是以提問為前提,引導(dǎo)為路徑,探究為目的的教學(xué)。具體說它是指教學(xué)過程是以教師精心設(shè)計的問題為前提,在教師的啟發(fā)誘導(dǎo)下,以學(xué)生獨立自主學(xué)習(xí)和合作討論為前提,以現(xiàn)行教材為基本探究內(nèi)容,以學(xué)生周圍世界和生活實際為參照對象,為學(xué)生提供充分自由表達、質(zhì)疑、探究、討論問題的機會,讓學(xué)生通過個人、小組、集體等多種解難釋疑嘗試活動,將自己所學(xué)知識應(yīng)用于解決實際問題的一種教學(xué)形式。

把“提問-引導(dǎo)-探究性”教學(xué)模式應(yīng)用于程序設(shè)計的教學(xué)中,實施引導(dǎo)變通程序設(shè)計,課堂教學(xué)氣氛活躍,教師和學(xué)生雙方都參與活動,他們都將以導(dǎo)師和主人的雙重身份進人課堂、辯謬糾錯、比較鑒別、層次分明、思維靈活,可以在提高程序設(shè)計能力,增強程序優(yōu)化意識上收到良好成效。

程序設(shè)計中“提問-引導(dǎo)-探究性”教學(xué)模式,究竟在哪幾個問題上“設(shè)疑”,如何去“設(shè)疑引導(dǎo)”,本身就是“應(yīng)變”的,并沒有一成不變的模式可套,必須因課制宜,因題制宜,因不同專業(yè)特點和學(xué)生實際而異。“辯疑解難”的實施,關(guān)鍵在引導(dǎo),切忌想當(dāng)然,脫離實際,強加于人,代替學(xué)生去完成變通,最后進行“釋疑鞏固”,同時注意,“設(shè)疑”應(yīng)有梯度,有針對性,不能面面俱到,貪廣求深,欲速不達。

參考文獻:

[1] 周春荔. 數(shù)學(xué)觀與方法論. 北京:首都師范大學(xué)出版社,1996

[2]何克抗.網(wǎng)絡(luò)教學(xué)結(jié)構(gòu)與網(wǎng)絡(luò)教學(xué)模式探討.教育技術(shù)通訊.

[3]高文主編.現(xiàn)代教學(xué)的模式化研究.山東教育出版社,2000

篇8

在高等學(xué)校的本科教育中,“C語言程序設(shè)計”幾乎成了所有專業(yè)的必開課程,從計算機科學(xué)與技術(shù)、軟件工程、網(wǎng)絡(luò)工程等相關(guān)專業(yè),到電子信息類理工科各專業(yè),乃至理工科院校的所有非計算機專業(yè),有的是專業(yè)基礎(chǔ)課,有的是公共必修基礎(chǔ)課,有的是“非計算機專業(yè)的計算機基礎(chǔ)課”。只是課程名稍有差異,常見的有“C語言程序設(shè)計”、“高級語言程序設(shè)計”、“C語言”、“C程序設(shè)計”、“結(jié)構(gòu)化程序設(shè)計”等。無論叫什么樣的課程名,也無論是哪類專業(yè),其課程的教學(xué)要求和教材選用卻無太大差別,只是課時分配差異較大。

從網(wǎng)絡(luò)調(diào)查的16所不同類型高校的“C語言程序設(shè)計”教學(xué)大綱看,普遍都包含“通過本課程的學(xué)習(xí),使學(xué)生了解有關(guān)程序設(shè)計的基本概念、術(shù)語及C語言的特點,掌握C語言基本數(shù)據(jù)類型、語法規(guī)則、程序控制結(jié)構(gòu)、常用的標(biāo)準(zhǔn)庫函數(shù),培養(yǎng)學(xué)生的程序設(shè)計技能,初步積累編程經(jīng)驗”的教學(xué)基本要求;約百分之八十左右的“C語言程序設(shè)計”課程都選用由譚浩強主編、清華大學(xué)出版社出版的“C程序設(shè)計”作為主教材;課時分配從30~108課時不等,其中80課時以上的多為應(yīng)用型本科院校的計算機相關(guān)專業(yè)以及綜合性大學(xué)的非計算機專業(yè),理論課時與實驗課時的比例一般為1:1到1:1.2。與此同時,其他專業(yè)基礎(chǔ)課(如計算機組成原理、操作系統(tǒng)、數(shù)據(jù)結(jié)構(gòu)等)的課時一般為54課時,最多不超過72學(xué)時。相比之下,“C語言程序設(shè)計”所占課時是其他專業(yè)基礎(chǔ)課的1.5倍至2倍。

從教學(xué)目的看,非計算機專業(yè)的“C語言程序設(shè)計”課程主要目的是“掌握語法規(guī)則和程序結(jié)構(gòu),具備一定的程序設(shè)計能力”,而計算機相關(guān)專業(yè)的“C語言程序設(shè)計”課的教學(xué)目的則要分為三個層次,一是使學(xué)生全面理解計算機程序設(shè)計語言的基本內(nèi)容和結(jié)構(gòu);二是通過算法掌握程序設(shè)計的基本方法和步驟,并具備一定的程序設(shè)計能力;三是為后續(xù)課程的算法描述和其他程序設(shè)計語言的學(xué)習(xí)奠定基礎(chǔ)。

二﹑教學(xué)誤區(qū)

從以上的教學(xué)現(xiàn)狀(特別是課時分配)看,長期以來,“C語言程序設(shè)計”的課程教學(xué)存在“教學(xué)內(nèi)容背離教學(xué)要求和教學(xué)目的”的誤區(qū),主要表現(xiàn)在教材誤區(qū)、講授誤區(qū)和考核誤區(qū)三個方面。

(一)教材誤區(qū)

國內(nèi)高校的“C語言程序設(shè)計”課大多選用譚浩強主編、清華大學(xué)出版社出版的“C程序設(shè)計”[1]為主教材,目前使用的是2005年7月修訂出版的第三版,教材共363頁,主體內(nèi)容分為14章,其中,第3章的數(shù)據(jù)類型與表達式占用30頁,第4章的格式輸入輸出占用12頁,前9章共占用218頁,后5章共占用145頁。占用如此大篇幅的原因是教材中除了介紹相關(guān)語法格式外,還增加了相當(dāng)多“特殊格式”和“特殊情況”的解釋和說明,因此,該教材的最大優(yōu)點就是“內(nèi)容詳盡、解釋清晰”。

然而,對于初學(xué)者來說,學(xué)習(xí)計算機程序設(shè)計語言就是為了“為計算機描述求解問題的過程”,過于詳細但又遠離現(xiàn)實問題的“特殊格式”和“特殊情況”的解釋,使得學(xué)習(xí)內(nèi)容復(fù)雜化,增加了程序設(shè)計語言學(xué)習(xí)的難度,誤導(dǎo)了學(xué)習(xí)者的學(xué)習(xí)重點,由此也賦予了該教材無法掩飾的缺點,那就是教材編寫的指導(dǎo)思想和教材內(nèi)容的組織脫離了高校各專業(yè)“C語言程序設(shè)計”課程的教學(xué)目標(biāo),過分強調(diào)語法細節(jié)而忽略了程序設(shè)計語言的“正向表達能力”的應(yīng)用,過分強調(diào)“語言的靈活性”而導(dǎo)致教材主體內(nèi)容的“復(fù)雜化”,從而誤導(dǎo)“C語言程序設(shè)計”課程的教學(xué)內(nèi)容朝著“重語法學(xué)習(xí)、輕算法描述”的“語言研究”方向發(fā)展。

(二)講授誤區(qū)

由于教材內(nèi)容的“復(fù)雜”,課堂講授自然需要較多課時,教學(xué)重點當(dāng)然也放在了“語法研究”上。從網(wǎng)上下載的“C程序設(shè)計(第三版)”的配套教學(xué)課件以及有關(guān)院校的“C語言程序設(shè)計”教學(xué)課件的內(nèi)容組織上可以清楚的給出以上判斷。“語法研究”型的課堂講授,更加放大了教材對“C語言程序設(shè)計”課程內(nèi)容的“扭曲”程度,給學(xué)生提供了錯誤的程序設(shè)計語言學(xué)習(xí)方法,把簡單問題復(fù)雜化,更為嚴(yán)重的是,挫傷了學(xué)生學(xué)習(xí)計算機程序設(shè)計語言的興趣和積極性,把本應(yīng)“主動學(xué)習(xí)”的課程成引入了“被動學(xué)習(xí)”的歧途,直接導(dǎo)致“懂語法、會做題,但不會編程序”的教學(xué)后果。

(三)考核誤區(qū)

篇9

關(guān)鍵詞 計算機 程序設(shè)計 課程群 建設(shè)和研究

中圖分類號:G642 文獻標(biāo)識碼:A

隨著新課程改革的不斷深入,對計算機專業(yè)的教學(xué)要求也越來越高。在信息技術(shù)發(fā)展飛速的現(xiàn)代社會,在計算機專業(yè)課程中,建設(shè)與研究程序設(shè)計課程群已經(jīng)成了時代對計算機專業(yè)知識教育的基本要求。“程序設(shè)計”是計算機程序設(shè)計課程群建設(shè)的關(guān)鍵內(nèi)容,這個過程是對課程實踐內(nèi)容要求相對較高的過程。計算機課程的發(fā)展領(lǐng)域非常廣闊,涉及到的內(nèi)容也極為豐富,因此,利用建設(shè)程序設(shè)計課程群來提高學(xué)生的創(chuàng)造力和開拓性思維是我們培養(yǎng)新時代計算機人才最重要的內(nèi)容。

1研究內(nèi)容

計算機專業(yè)人才培養(yǎng)也有相應(yīng)的要求和規(guī)定,即在本科四年的學(xué)習(xí)過程中,要把程序設(shè)計在每一門課程的教學(xué)過程中體現(xiàn)出來,應(yīng)該把培養(yǎng)他們的程序設(shè)計能力放在最基本的能力培養(yǎng)方案之中。包括程序設(shè)計這項內(nèi)容的計算機專業(yè)課程有十多門,例如,C語言和C++程序設(shè)計,C語言可以作為工作系統(tǒng)設(shè)計語言,編寫系統(tǒng)應(yīng)用程序,也可以作為應(yīng)用程序設(shè)計語言,編寫不依賴計算機硬件的應(yīng)用程序,代碼清晰精簡,十分靈活;C++是一種靜態(tài)數(shù)據(jù)類型檢查的、支持多重編程范式的通用程序設(shè)計語言。它支持過程化程序設(shè)計、數(shù)據(jù)抽象、面向?qū)ο蟪绦蛟O(shè)計、泛型程序設(shè)計等多種程序設(shè)計風(fēng)格、數(shù)據(jù)結(jié)構(gòu)課程和數(shù)據(jù)結(jié)構(gòu)課程設(shè)計、面向?qū)ο蟮囊约皵?shù)據(jù)庫的課程設(shè)計。還有一系列諸如Windows和Java等的程序設(shè)計,嵌入式程序設(shè)計和net程序設(shè)計等一系列課程。這些課程的應(yīng)用設(shè)置完全是按照21世紀(jì)發(fā)展過程中對人才的需求特色來進行設(shè)置的。把為國家和社會培養(yǎng)大批實用性的人才作為主要的培養(yǎng)目標(biāo),不僅要讓他們了解計算機技術(shù)還要讓他們培養(yǎng)基本的程序設(shè)計技巧和基本能力。

2方式構(gòu)建

要設(shè)置計算機程序設(shè)計課程群,就要按照學(xué)校教學(xué)特色的不同來進行設(shè)置。學(xué)校要分清計算機市場的市場需要,確定程序設(shè)計的工作職能以及工作范圍。把學(xué)校和企業(yè)進行緊密的結(jié)合與聯(lián)系,把學(xué)校的專業(yè)教師和企業(yè)的相關(guān)專家進行緊密的結(jié)合與聯(lián)系。組成一支由企業(yè)和專家共同組成的建設(shè)隊伍。現(xiàn)有的課程包含的科目內(nèi)容比較多,比如,數(shù)據(jù)結(jié)構(gòu)以及高級語言程序設(shè)計等。換句話說,也就是在已有的人才培養(yǎng)方案的基礎(chǔ)上,將課程群所包含的科目進行科學(xué)設(shè)置,在一定情況下也可以將人才培養(yǎng)方案進行大量的修改。程序建設(shè)工作要在充分對企業(yè)進行調(diào)查的基礎(chǔ)上進行,可以設(shè)置專門的操作程序,對學(xué)生的操作程序的技術(shù)進行評分,用以提高學(xué)生的綜合素質(zhì)和職業(yè)能力。其次,要根據(jù)學(xué)生進行程序設(shè)計的基本能力進行課程群設(shè)置內(nèi)容的組織。確定主要的課程內(nèi)容,然后根據(jù)相關(guān)課程的性質(zhì)進行課程群的建設(shè)。

3核心思路探索

(1)從已經(jīng)建立起來的國家人才培養(yǎng)方案進行考慮,將各門課程科目在課程群里面進行科學(xué)的設(shè)置。

(2)就是仔細研究構(gòu)建課程群的思路和主要框架,這個構(gòu)建過程要從點到線,從線到面,從面到體,即,從知識點聯(lián)系到課程主線,再從課程主線構(gòu)建整個課程群,最后建立起課程群與課程群之間的體系鏈接。經(jīng)過這一系列的步驟,教學(xué)任務(wù)和學(xué)習(xí)任務(wù)才能得到相應(yīng)的明確,教學(xué)和應(yīng)用之時,會體現(xiàn)出更有層次感的知識架構(gòu),在學(xué)習(xí)的過程中,學(xué)生也可以對知識進行準(zhǔn)確的定位,最后進一步地將基礎(chǔ)知識進行強化,因此,培養(yǎng)出來的人才的知識面會更廣,他們的實踐能力和應(yīng)用能力也會相應(yīng)的得到提高。

(3)是在授課過程中教師最好把理論知識、實踐應(yīng)用、課程群的體系都形成體系化的教學(xué)環(huán)節(jié)。即使用一條龍的模式進行授課,這樣可以更清晰地分享給學(xué)生相應(yīng)的程序設(shè)計和程序之間的銜接和轉(zhuǎn)化。

(4)是加強對學(xué)生思維的擴展,讓他們具備一定的創(chuàng)新知識和創(chuàng)新能力,這個過程不能急于求成,而是要一步一步的進行,也可以從細節(jié)出發(fā),引導(dǎo)學(xué)生去自主創(chuàng)新,強化學(xué)生的創(chuàng)新意識和創(chuàng)新精神,讓他們更具抽象的思維能力和創(chuàng)造力,這樣才能達到創(chuàng)新型人才的培養(yǎng)目標(biāo)。

(5)是將實驗引入課堂教學(xué)的基本內(nèi)容里面,讓學(xué)生主動參與到程序設(shè)計里面去,這樣一方面可以將枯燥的知識變得有意思,提升學(xué)生上課的積極性和對這門課程的熱情,另一方面還可以增強學(xué)生的動手能力和創(chuàng)造力,讓他們更有學(xué)習(xí)的動力和熱情。

(6)結(jié)合現(xiàn)在軟件公司對人才的基本需求,和軟件企業(yè)緊密聯(lián)系在一起,這樣才能明確所建設(shè)的程序設(shè)計課程群是否能夠滿足市對人才的需求。

(7)將理論考試和上機考試的成績比例進行更加科學(xué)的分配,將程序設(shè)計也放在考試內(nèi)容里設(shè)計出具有操作價值的上機考試科目。

(8)將自己的研究視角進行相應(yīng)的改變,提倡理論聯(lián)系實際,將提高學(xué)生的綜合素質(zhì)作為課程學(xué)習(xí)的前提和基礎(chǔ)。

4結(jié)語

總之,通過怎樣的教學(xué)方式才能將建設(shè)程序設(shè)計課程群的過程設(shè)計得更加實用,是每一位計算機專業(yè)教師和相關(guān)院校需要鉆研的問題。為了抑制傳統(tǒng)教學(xué)模式造成的不利影響,計算機程序設(shè)計課程必須將理論和實踐結(jié)合在一起,實現(xiàn)一條龍的設(shè)計步驟,把教師放在教育引導(dǎo)的位置上,強化對學(xué)生相關(guān)實際應(yīng)用專業(yè)知識素養(yǎng)的培養(yǎng)。教師要從細節(jié)出發(fā),引導(dǎo)學(xué)生去自主創(chuàng)新,強化學(xué)生的創(chuàng)新意識和創(chuàng)新精神,讓他們更具抽象的思維能力和創(chuàng)造力,這樣才能達到計算機專業(yè)程序設(shè)計課程群的建設(shè)目標(biāo)。

參考文獻

[1] 丁麗.程序設(shè)計課程群建設(shè)與改革研究[J].山東省農(nóng)業(yè)管理干部學(xué)院學(xué)報,2011,28(6).

[2] 孫雷,王新,張麗英等.計算機專業(yè)程序設(shè)計課程群的研究與實踐[J].教育教學(xué)論壇,2013(11).

篇10

關(guān)鍵詞:計算思維;程序設(shè)計;研究性教學(xué)

中圖分類號:G424 文獻標(biāo)識碼:A 文章編號:1009-3044(2016)28-0150-03

1 背景

1.1 計算思維

“計算思維”一詞早在2006年美國卡內(nèi)基梅隆(CMU)的周以真教授就給出了定義,其本質(zhì)是抽象和自動化。周教授強調(diào)計算思維不僅屬于計算機科學(xué)家,而應(yīng)是每一個人的基本技能。[1]2010年我國九校聯(lián)盟會議也發(fā)表聲明指出,培養(yǎng)復(fù)合型創(chuàng)新人才的一個重要內(nèi)容就是要潛移默化地培養(yǎng)學(xué)生養(yǎng)成一種新的思維方式――計算思維。[2]

1.2 研究性教學(xué)

高等教育的任務(wù)是培養(yǎng)具有創(chuàng)新精神創(chuàng)新能力的高級專門人才。研究性教學(xué)作為一種開放式教學(xué)模式,是本科院校培養(yǎng)人才的重要途徑。2000年以來,教育部先后出臺“關(guān)于加強高等學(xué)校本科教學(xué)工作提高教學(xué)質(zhì)量的若干意見”等文件,都明確提出積極推動研究性教學(xué),提高大學(xué)生的創(chuàng)新能力。[3]各高校積極將研究性教學(xué)理念融入到教學(xué)改革中,積極探討研究性教學(xué)的理論與實踐模式。

由此可見,在當(dāng)今信息技術(shù)時代,培養(yǎng)學(xué)生的計算思維能力是培養(yǎng)具有創(chuàng)新能力的人才的必要條件。在積極實踐研究性教學(xué)改革過程中,不斷滲透計算思維的思想,培養(yǎng)學(xué)生計算思維能力,是一項非常有意義的重要任務(wù)。

2 我校計算機基礎(chǔ)教學(xué)的現(xiàn)狀

為應(yīng)對高校計算機基礎(chǔ)的教學(xué)改革,我校對計算機基礎(chǔ)課程的教學(xué)做了改動,非計算機專業(yè)學(xué)生第1學(xué)期先行開設(shè)大學(xué)計算機基礎(chǔ)課程,第2學(xué)期開設(shè)程序設(shè)計課程。這樣使新生在了解計算思維的概念后,能有意識地使用計算思維去思考問題、去解決一些基本問題,同時對后續(xù)開設(shè)的程序設(shè)計課程有一定的鋪墊作用。

我校在研究性教學(xué)初步實踐的基礎(chǔ)上,現(xiàn)已在18個專業(yè)全面開展研究性教學(xué)改革,計算機公共課教學(xué)也在此列中。將研究性教學(xué)改革應(yīng)用于程序設(shè)計課程,正好解決了目前非計算機專業(yè)程序設(shè)計課程教學(xué)過程中尷尬局面,其一是教學(xué)過程中偏重語法講解,內(nèi)容多、晦澀難懂;其二實驗課時少,學(xué)生編程能力和調(diào)試能力差等。

程序設(shè)計課程正好也是訓(xùn)練學(xué)生計算思維能力的一個重要平臺。因而,如何在程序設(shè)計課程的研究性教學(xué)中訓(xùn)練學(xué)生的計算思維能力,又如何利用學(xué)生的計算思維能力促進程序設(shè)計課程的教學(xué)改革,則是我們計算機公共課教學(xué)工作者要積極思考并付諸實踐的重要課題。

3 注重計算思維的程序設(shè)計課程研究性教學(xué)探討

我們在非計算機專業(yè)開展注重計算思維的程序設(shè)計課程(以《C語言程序設(shè)計》課程為例)研究性教學(xué),是以培養(yǎng)創(chuàng)新人才為目標(biāo),激勵和引導(dǎo)學(xué)生主動發(fā)現(xiàn)問題、分析問題和解決問題,在以教師為主導(dǎo)、學(xué)生為主體的探究過程中運用計算思維的方法獲取知識、訓(xùn)練思維、培養(yǎng)能力。

根據(jù)計算思維和研究性教學(xué)的特點,我們從本校實際情況出發(fā),實施C語言程序設(shè)計課程研究性教學(xué)以課堂研究性教學(xué)為主,且又不僅僅局限于課堂中,輔以學(xué)生自主探究、合作學(xué)習(xí)、網(wǎng)絡(luò)自測、觀看視頻。對教學(xué)內(nèi)容進行整合,將課程內(nèi)容分為幾個階梯式的程序設(shè)計階段,依次是語法基礎(chǔ)、基本控制結(jié)構(gòu)、模塊化程序設(shè)計等。教學(xué)過程中,根據(jù)具體教學(xué)內(nèi)容靈活運用適合于研究性教學(xué)的方法和手段,如問題式教學(xué)法、案例教學(xué)法、任務(wù)驅(qū)動教學(xué)法等,激發(fā)學(xué)生的學(xué)習(xí)興趣,注重解決實際問題的程序設(shè)計思想與方法,注重計算思維能力的培養(yǎng)。

3.1 基本語法的問題式教學(xué),培養(yǎng)計算思維能力

問題式教學(xué)通過提出一系列問題來組織教學(xué)內(nèi)容,把問題貫穿于教學(xué)過程的始終。古人云“學(xué)起于思,思源于疑”,問題、疑問是思維的“啟發(fā)劑”。我們首先要創(chuàng)設(shè)問題情境,激活學(xué)生思維;交流討論,啟發(fā)學(xué)生反向思維;解決疑問,學(xué)會計算思維的方法。

C語言的基本語法、基本控制結(jié)構(gòu)本身就蘊含著重要的計算思維。[4]我們通過不斷設(shè)問、反問,來逐步分析、挖掘、探索C語言語法的知識內(nèi)涵,讓學(xué)生領(lǐng)悟語法定義的目的、形式和使用方式。這樣讓學(xué)生既學(xué)到了C語言基本語法,又有利于在使用過程中少犯錯誤,即使出現(xiàn)語法錯誤也能快速找出癥結(jié)所在。

示例問題:將華氏溫度轉(zhuǎn)換成攝氏溫度。轉(zhuǎn)換公式:C=5.0/9*(F-32),其中F為華氏溫度。

講解示例,首先設(shè)問“如何告訴計算機所要完成任務(wù)?”,當(dāng)然用符號表示(即符號化),這是一次抽象的過程。再問“直接輸入轉(zhuǎn)換公式,計算機能識別公式中的符號嗎?”,演示發(fā)現(xiàn)系統(tǒng)會報錯,無法識別F和C。接著問“怎樣讓系統(tǒng)接受未知的數(shù)據(jù)?”及“在C語言中如何“介紹”新數(shù)據(jù)?”,此時讓學(xué)生去自學(xué)、討論數(shù)據(jù)對象的命名規(guī)則及基本數(shù)據(jù)類型,并帶著問題“為何不能將形如int、1st、W.Join作為對象名(用戶標(biāo)識符)?int和Int在有何區(qū)別?”去思考。通過討論最終確認(rèn),使用“float F,C;”來聲明兩個實型變量F和C。這又一次的抽象使學(xué)生不僅學(xué)到了知識,而且還體會計算思維的確定性和形式化。

聲明變量后,設(shè)問“能運行并得到正確結(jié)果嗎?答案是多少?”,此時讓學(xué)生手算或心算,有人發(fā)現(xiàn)F的值未知,無法計算。但教師演示系統(tǒng)卻未報錯,提問“為什么?”學(xué)生帶著好奇,教師道出原因,讓其進一步了解變量的含義。為得到正確結(jié)果,需要先為F賦值,設(shè)問“怎么賦值?”,學(xué)生回答“F=50”,教師給予肯定的同時反問,這樣系統(tǒng)每次運行得到的結(jié)果會怎樣?讓學(xué)生發(fā)現(xiàn)這樣的程序不具備通用性,由此引出C語言的輸入輸出庫函數(shù)。

以問題為中心的教學(xué)示例中,將學(xué)生思考、討論和教師講解、點評有機地結(jié)合起來,師生在互動中學(xué)習(xí)、探究,教師引導(dǎo)學(xué)生積極主動地獲取知識,學(xué)生通過基本語法的學(xué)習(xí)也培養(yǎng)了計算思維能力。

3.2 三種控制結(jié)構(gòu)的案例教學(xué),強化計算思維能力

案例的選取是案例教學(xué)中的關(guān)鍵因素,[5]選取的案例所反應(yīng)的知識點要豐富,具有針對性、啟發(fā)性和擴展性,應(yīng)由簡單到復(fù)雜。針對結(jié)構(gòu)化程序設(shè)計思想中的順序、選擇和循環(huán)三種結(jié)構(gòu),通過抽象問題、分組討論、集中討論和總結(jié)反思等環(huán)節(jié),使學(xué)生在案例分析的過程中體會計算思維的特征,強化計算思維能力。

案例1,已知三條邊長,求三角形面積。[6]

學(xué)生課前準(zhǔn)備案例時,收集或查找各種計算三角形面積的方法。在小組討論時每位學(xué)生給出不同的解題思路,相互間指出問題,比較哪種算法描述更簡潔。課堂教學(xué)時采用集中討論,每組推選代表簡述討論結(jié)果,由教師和其他組學(xué)生給予評價。教師在教學(xué)過程中不斷啟發(fā)學(xué)生、鼓勵學(xué)生,同時給出總結(jié),比如該案例使用海倫公式計算是較方便的方法,使用語言描述算法時注意的語法規(guī)則。如果有小組提出“三邊能否構(gòu)成三角形”問題,則應(yīng)大力表揚,促使學(xué)生提高思維的縝密性和嚴(yán)謹(jǐn)性,同時順理成章地引入分支結(jié)構(gòu)。

案例2,比較兩位學(xué)生的成績,輸出最高分。如果人數(shù)擴展到3人、N人,如何找出最高分?

案例第1問解決思路非常清晰簡潔,使用1次雙分支結(jié)構(gòu)即可,至少兩種描述方法:if-else和switch-case結(jié)構(gòu)。當(dāng)比較人數(shù)擴展到3人時,和學(xué)生探討出多種描述算法,既可以使用嵌套的分支結(jié)構(gòu),也可兩次使用分支結(jié)構(gòu)。通過討論可以開闊學(xué)生的思路,又促使學(xué)生主動思考,鼓勵思維的多樣性。案例的最后一問是難點,教師應(yīng)給予指點,讓學(xué)生帶著問題“N個成績?nèi)绾未鎯Γ渴褂肗個簡單變量可行嗎?N個成績需要比較多少次?”去查資料、思考,有思路也有困惑。“N個成績比較N-1次找出最高分”答案是肯定的,但數(shù)據(jù)存儲是難點。一種思路是用數(shù)組,引入數(shù)組的概念,為下一章做好鋪墊;另一種思路依舊用簡單變量,但用N個簡單變量是不現(xiàn)實的,引導(dǎo)學(xué)生縱向思考,每次存放一個成績,重復(fù)N次即可,引入循環(huán)結(jié)構(gòu)。解決方案是用兩個變量,擂臺思想,循環(huán)N-1次就能找出N個中的最高分。

通常我們設(shè)計的教學(xué)案例都不是很復(fù)雜,讓學(xué)生努力一下能解決,但是要具備多樣性和擴展性,讓學(xué)生從不同角度認(rèn)識問題,用不同方式描述算法,用不同方法實現(xiàn)問題求解。用程序設(shè)計語言描述、解決問題,正是將人的日常思維轉(zhuǎn)換到計算機思維的過程。

3.3 模塊化設(shè)計的任務(wù)驅(qū)動教學(xué),提高計算思維層次

任務(wù)驅(qū)動教學(xué)是一種建立在建構(gòu)主義學(xué)習(xí)理論基礎(chǔ)上的教學(xué)模式,[7]它以教師為主導(dǎo)、學(xué)生為主體,教、學(xué)雙方都圍繞若干項任務(wù)展開,在求知欲的驅(qū)動下,學(xué)生采用自主探究和協(xié)作學(xué)習(xí)方式,根據(jù)對任務(wù)的理解,運用共有知識和已有經(jīng)驗提出解決方案、完成特定任務(wù)。

將任務(wù)驅(qū)動教學(xué)法應(yīng)用于程序設(shè)計課程教學(xué)的后半期,此時學(xué)生已具備一定的程序設(shè)計基礎(chǔ)知識和計算思維能力,教師把精心準(zhǔn)備的小系統(tǒng)(如一元多項式運算系統(tǒng)、基本算術(shù)運算測試系統(tǒng)、矩陣運算系統(tǒng)及小規(guī)模信息處理系統(tǒng))的開發(fā)任務(wù),分配給每個協(xié)作小組,也可讓小組(或組長)從若干任務(wù)中挑選。

每個小組接到不同任務(wù)后,結(jié)合系統(tǒng)設(shè)計要求,采用自頂向下、逐步細化、模塊化的方法,設(shè)計系統(tǒng)的總體結(jié)構(gòu),包括系統(tǒng)的基本處理流程、組織結(jié)構(gòu)、模塊劃分、功能分配、接口設(shè)計和數(shù)據(jù)結(jié)構(gòu)設(shè)計等。比如一元多項式運算系統(tǒng),其設(shè)計要求是實現(xiàn)一元多項式的加、減、乘、除運算。從表面上看系統(tǒng)應(yīng)由1個主模塊和4個子模塊組成,起主導(dǎo)作用的教師要引導(dǎo)學(xué)生運用計算思維的關(guān)注點分離、抽象和分解的方法進行分析。為了能進行運算,首先要輸入一元多項式,運算結(jié)束后要輸出一元多項式,增加輸入、輸出兩個子模塊。在實現(xiàn)四種運算時,引導(dǎo)學(xué)生使用計算思維的約簡、嵌入、轉(zhuǎn)化等方法,將其轉(zhuǎn)化成合并同類項、降冪排列、刪除系數(shù)為0項等問題,又需增加4~5個功能模塊。在任務(wù)驅(qū)動下,協(xié)作小組成員通過參考書、網(wǎng)絡(luò)等自主檢索、探究、思考、討論,對每個模塊進一步細化,確定每個模塊的具體功能,畫出系統(tǒng)的組織結(jié)構(gòu)圖和基本處理流程。在設(shè)計數(shù)據(jù)結(jié)構(gòu)時,小組成員討論是從已會的一維、二維數(shù)組中選擇,還是從未學(xué)的結(jié)構(gòu)數(shù)組、鏈表中選擇,既要考慮能便于數(shù)據(jù)的處理,又要考慮組內(nèi)成員的水平,因為每個系統(tǒng)需組內(nèi)成員分工協(xié)作才能完成。組長此時可以協(xié)調(diào),先用一維數(shù)組實現(xiàn),后期也可在素質(zhì)較高的學(xué)生帶領(lǐng)下使用鏈表等實現(xiàn),這樣小組成員相互協(xié)作、相互啟發(fā)、共同提高,體現(xiàn)團隊合作的理念。

每位成員領(lǐng)取分解的任務(wù)后,根據(jù)共同確定的數(shù)據(jù)結(jié)構(gòu)和模塊接口的描述,對具體子模塊進行詳細設(shè)計,給出詳細的算法描述。然后,分組討論每位成員的算法可行性,以及與其他子模塊之間的調(diào)用關(guān)系,如遇到解決不了的問題,教師可參與討論,給予一定指導(dǎo),調(diào)動大家的積極性。算法確定后,每位學(xué)員根據(jù)算法編寫代碼并寫出設(shè)計報告。協(xié)作小組成員再集中交流各自完成的情況,由組長集成系統(tǒng)代碼,組員一起參與調(diào)試過程,發(fā)現(xiàn)問題解決問題,共同進步。每位學(xué)員按照報告模板提交各自的設(shè)計成果,采用答辯的形式在班級討論課上進行匯報。答辯過程中,教師和其他學(xué)生可以提出看法和觀點,教師應(yīng)對答辯學(xué)生的講述和提出異議的觀點進行正誤的分析,因為學(xué)生為了完成這項任務(wù)都是深思熟慮的,教師及時地分析總結(jié)歸納,不僅使學(xué)生對所學(xué)知識的鞏固,而且進一步擴展學(xué)生的計算思維能力。

采用任務(wù)驅(qū)動教學(xué)法不再強調(diào)系統(tǒng)開發(fā)的成功與否,而是強調(diào)學(xué)生在系統(tǒng)設(shè)計過程中的收獲。每位學(xué)生通過對具體問題分析、討論、解決,不斷訓(xùn)練自己的計算思維能力,通過以小組方式進行一個小規(guī)模系統(tǒng)的設(shè)計,將學(xué)生的計算思維能力提高了一個層次。

4 結(jié)語

在程序設(shè)計課程研究性教學(xué)過程中不斷滲透計算思維的思想,更加利于學(xué)生對知識的掌握,同時利于提高計算思維能力,推動學(xué)生創(chuàng)新能力的進一步發(fā)展。我們從學(xué)校實際出發(fā),提出整合教學(xué)內(nèi)容,對基本語法的問題式教學(xué)、基本控制結(jié)構(gòu)的案例教學(xué)及模塊化設(shè)計的任務(wù)驅(qū)動教學(xué)等研究性教學(xué)法進行探討,以期使教師能夠擺脫教材束縛,將理論與實驗課時、課內(nèi)和課外充分利用,更好地發(fā)揮教學(xué)的自主性,促進學(xué)生的計算思維能力的提高。

參考文獻:

[1] Jeannette putational Thinking[J].Communications of the ACM,2006,49(3):33-35.

[2] 何欽銘,陸漢權(quán),馮博琴. 計算機基礎(chǔ)教學(xué)的核心任務(wù)是計算思維能力的培養(yǎng)[J]. 中國大學(xué)教學(xué),2010( 9):5-9.

[3] 徐風(fēng)生. 研究性教學(xué)的理論探討與實踐[J]. 高等理科教育,2012(6):44-48.

[4] 徐新海,林宇斐. 注重計算機思維的啟發(fā)式C語言語法教學(xué)[J]. 計算機教育,2014(9):1-4.

[5] 唐芳. 案例教學(xué)法與任務(wù)驅(qū)動教學(xué)法的比較[J]. 順德職業(yè)技術(shù)學(xué)院學(xué)報,2011(10):36-37