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