徐偉光+苗壯+李陽(yáng)+王家寶
摘要:隨著計(jì)算機(jī)技術(shù)應(yīng)用的深度普及,理工科學(xué)生為了使用計(jì)算機(jī)解決本領(lǐng)域的實(shí)際問(wèn)題,都需要具備一定的程序閱讀和設(shè)計(jì)能力。因此《程序設(shè)計(jì)基礎(chǔ)》已經(jīng)成為理工科的公共基礎(chǔ)課程。然而對(duì)課程知識(shí)層次不加區(qū)分,過(guò)度強(qiáng)調(diào)編程語(yǔ)言語(yǔ)法規(guī)則的講授,使學(xué)生形成了對(duì)程序設(shè)計(jì)錯(cuò)誤的認(rèn)識(shí),教學(xué)效果不好。該文將程序設(shè)計(jì)課程知識(shí)劃分為編程語(yǔ)言語(yǔ)法規(guī)則、程序設(shè)計(jì)思想和計(jì)算機(jī)算法三個(gè)層次,并對(duì)各層次針對(duì)性的教學(xué)方法進(jìn)行了探討。
關(guān)鍵詞:程序設(shè)計(jì); 知識(shí)結(jié)構(gòu); 教學(xué)方法; 語(yǔ)法規(guī)則;算法
中圖分類號(hào):G642.0 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)22-0150-02
Abstract: As the application of computer technologies popularizing, in order to solve problems of their domains, students of science should have the ability of reading and designing program. Therefore, “program designing foundation” has become a public basic course for all students of science. However, ignoring knowledge hierarchy of the course and overemphasizing teaching grammar rules of some specific program language may leading students to a misunderstanding of program designing, and the effect of teaching is not so good. Knowledge structure of the course is divided into three levels in this paper, which are program rules of programing language, method of program designing, and computer algorithm. Methods of teaching for the three levels are discussed as well.
Key words: program designing; knowledge structure; teaching method; grammar rules; algorithms
1 引言
引言內(nèi)容。 《程序設(shè)計(jì)基礎(chǔ)》課程是一門(mén)公共基礎(chǔ)課程,其教學(xué)目標(biāo)是培養(yǎng)學(xué)生掌握編程語(yǔ)言的基礎(chǔ)知識(shí)、技術(shù)和部分算法,掌握程序設(shè)計(jì)的思想和方法,培養(yǎng)學(xué)生編程解決實(shí)際問(wèn)題的能力。然而,由于編程語(yǔ)言的語(yǔ)法豐富多變,需解決是的實(shí)際問(wèn)題案例也相對(duì)較多,教師的大部分時(shí)間和精力都用于講授編程語(yǔ)言的語(yǔ)法規(guī)則、語(yǔ)義、程序基本結(jié)構(gòu)和算法思想[1]。盡管采用了教室理論講授和機(jī)房實(shí)驗(yàn)實(shí)踐方式結(jié)合,但是有針對(duì)性的引導(dǎo)和提高學(xué)生實(shí)際程序設(shè)計(jì)能力舉措并不多見(jiàn)。這個(gè)問(wèn)題的深層次原因是部分教師照本宣科,而對(duì)該課程知識(shí)分層和分層采取不同教學(xué)方法缺乏主動(dòng)思考和探索。
2 知識(shí)結(jié)構(gòu)分層及教學(xué)方法
早在程序設(shè)計(jì)未走入課堂之前,學(xué)者們就開(kāi)始了對(duì)程序設(shè)計(jì)本質(zhì)的思考。N.With認(rèn)為程序就是算法和數(shù)據(jù)結(jié)構(gòu)的結(jié)合。高福成等人認(rèn)為程序設(shè)計(jì)課程的知識(shí)分為語(yǔ)言知識(shí)、程序設(shè)計(jì)方法和算法三個(gè)模塊[2]。李海倫等人認(rèn)為程序設(shè)計(jì)是算法設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)和程序設(shè)計(jì)方法三者的統(tǒng)一[3]。他們的各種視角和觀點(diǎn)都是對(duì)程序設(shè)計(jì)知識(shí)分層的有益探索和推進(jìn)。一般來(lái)說(shuō),利用計(jì)算機(jī)解決實(shí)際問(wèn)題分為三個(gè)基本步驟。首先要以適當(dāng)設(shè)計(jì)思想將實(shí)際問(wèn)題分解,其次為分解后的子問(wèn)題分別設(shè)計(jì)算法,最后再用某種語(yǔ)言編程實(shí)現(xiàn)。與這三個(gè)步驟相對(duì)應(yīng),程序設(shè)計(jì)基礎(chǔ)課程所講授的知識(shí)分為三個(gè)層次:編程語(yǔ)言語(yǔ)法規(guī)則、算法、程序設(shè)計(jì)思想。
2.1 編程語(yǔ)言語(yǔ)法規(guī)則
語(yǔ)法規(guī)則處于知識(shí)的最底層。從實(shí)際工程應(yīng)用看,它是掌握編程技術(shù)的基礎(chǔ);從應(yīng)試角度看,它是課程考核的重點(diǎn)。計(jì)算機(jī)二級(jí)考試中相當(dāng)一部分題目都是對(duì)語(yǔ)法規(guī)則的考核?;谶@些原因,課堂教學(xué)內(nèi)容大部分都聚焦在各種語(yǔ)法規(guī)則和變化的講授和實(shí)踐上。而長(zhǎng)久以來(lái)的這種解學(xué)模式形成了對(duì)學(xué)生的錯(cuò)誤引導(dǎo),很多學(xué)生認(rèn)為printf和scanf的使用規(guī)則就是課程的全部。多年以后,那些不從事編程工作的學(xué)生留下的印象就只剩下“printf”,而從事編程工作的學(xué)生也需要相當(dāng)長(zhǎng)時(shí)間的實(shí)踐才能糾正對(duì)程序設(shè)計(jì)的錯(cuò)誤認(rèn)識(shí)。因此,語(yǔ)法規(guī)則是程序設(shè)計(jì)教學(xué)內(nèi)容的一部分,但不應(yīng)該成為重點(diǎn)。
相較于填鴨式的灌輸語(yǔ)法規(guī)則,更恰當(dāng)?shù)姆绞绞且詥?wèn)題需求為牽引,在需要時(shí)引入新的語(yǔ)法規(guī)則介紹給學(xué)生。例如,當(dāng)需要控制輸出十進(jìn)制整數(shù)占10位且左對(duì)齊右對(duì)齊時(shí)使用printf(“%-10d”, x);當(dāng)需要一次定義多個(gè)同類型變量時(shí)使用數(shù)組;當(dāng)不適用變量名訪問(wèn)變量時(shí)使用指針等。同時(shí)迅速在實(shí)驗(yàn)中讓學(xué)生結(jié)合實(shí)際問(wèn)題加以聯(lián)系,從而達(dá)到記憶和熟能生巧的教學(xué)效果。
2.2 程序設(shè)計(jì)思想
語(yǔ)法規(guī)則處于知識(shí)的最高層。從實(shí)際工程應(yīng)用來(lái)看,它是開(kāi)發(fā)正確可靠的程序的前提,是提高程序復(fù)用性、可擴(kuò)展性,降低調(diào)試和維護(hù)難度,縮短開(kāi)發(fā)周期的重要手段;從應(yīng)試角度看,卷面上只能通過(guò)程序設(shè)計(jì)題讓學(xué)生設(shè)計(jì)編寫(xiě)一個(gè)完整程序以解決某個(gè)實(shí)際問(wèn)題來(lái)考核,但由于考試時(shí)間和閱卷難度,該實(shí)際問(wèn)題一般復(fù)雜度不高,所以并不能很好的考查學(xué)生對(duì)程序設(shè)計(jì)思想的掌握程度。由于考核方式牽引,教師往往在課堂上忽視對(duì)程序設(shè)計(jì)思想的教授和培養(yǎng),最終導(dǎo)致很多考試成績(jī)很高學(xué)生,在走上工作崗位后反而不會(huì)編程。
程序設(shè)計(jì)思想的培養(yǎng),只能通過(guò)抽象思維的教學(xué)方法引導(dǎo)學(xué)生思考、模仿和鍛煉。例如以貪吃蛇游戲等復(fù)雜度稍高的實(shí)際問(wèn)題,講解如何將復(fù)雜問(wèn)題分解轉(zhuǎn)化成子問(wèn)題,以及如何建立子問(wèn)題之間的邏輯關(guān)系和數(shù)據(jù)關(guān)系,激發(fā)學(xué)生的主動(dòng)思考的興趣,鼓勵(lì)學(xué)生獨(dú)立完成相對(duì)復(fù)雜程序的激情,進(jìn)而使其程序設(shè)計(jì)能力得到潛移默化的提高。
2.3 計(jì)算機(jī)算法
計(jì)算機(jī)算法處于知識(shí)的中間層。從實(shí)際工程應(yīng)用看,它是為分解后的子問(wèn)題設(shè)計(jì)具體解決方案和最終形成計(jì)算機(jī)可執(zhí)行的程序代碼的過(guò)渡階段;從應(yīng)試角度看,一般通過(guò)程序閱讀題考查學(xué)生能否跟蹤算法并最終得到正確輸出結(jié)果,通過(guò)程序設(shè)計(jì)題考查學(xué)生能否設(shè)計(jì)算法解決一個(gè)具體實(shí)際問(wèn)題。
計(jì)算機(jī)算法是計(jì)算機(jī)科學(xué)中一項(xiàng)專門(mén)知識(shí),包括排序、加密等具體復(fù)雜算法以及算法的時(shí)間復(fù)雜度和空間復(fù)雜度計(jì)算方法等。而在程序設(shè)計(jì)基礎(chǔ)課程中,在算法上僅要求學(xué)生能讀懂和理解程序運(yùn)行流程,掌握設(shè)計(jì)和實(shí)現(xiàn)流程的能力。在該層次上的教學(xué)應(yīng)當(dāng)采用形象思維的方法,以具體案例為牽引,對(duì)涉及算法的,用流程框圖直觀的展現(xiàn)程序如何控制算法運(yùn)行,引導(dǎo)學(xué)生逐步從形象思維過(guò)渡到抽象思維[2]。
3 結(jié)論
木工技術(shù)的知識(shí)結(jié)構(gòu)層次與程序設(shè)計(jì)具有很強(qiáng)的相似性。要教出一個(gè)好木工,不僅要教會(huì)其熟練使用刨子、句子、墨線等基本工具,還要教會(huì)其將一件大家具分解成門(mén)板、腿、閂等基本構(gòu)件及其組裝方式的設(shè)計(jì)思想,教會(huì)其設(shè)計(jì)單個(gè)構(gòu)件的制作工序,從而具備獨(dú)立打造完整一套家具的能力。類似的,如果教師們能夠按照程序設(shè)計(jì)基礎(chǔ)課程的知識(shí)層次,有針對(duì)性的采用不同的教學(xué)方法講授不同層次的知識(shí),培養(yǎng)和鍛煉學(xué)生的不同層次的能力,那么一定能取得較好的教學(xué)效果。
參考文獻(xiàn):
[1] 孔萬(wàn)增, 戴國(guó)駿.“因材施教”在《C語(yǔ)言程序設(shè)計(jì)》課程教學(xué)中的幾點(diǎn)思考[C].計(jì)算機(jī)教學(xué)研究與實(shí)踐——2009學(xué)術(shù)年會(huì)論文集, 2009.
[2]李海倫, 唐全.“程序設(shè)計(jì)”課程教學(xué)改革的研究與實(shí)踐[C]. 全國(guó)高等院校計(jì)算機(jī)基礎(chǔ)教育研究會(huì)2004學(xué)術(shù)年會(huì)暨全國(guó)高等院校計(jì)算機(jī)基礎(chǔ)教育研究會(huì)成立20周年紀(jì)念大會(huì), 2004.
[3] 高福成, 潘旭華.“程序設(shè)計(jì)”課程教學(xué)方法與手段改革探討[C]. 全國(guó)高等院校計(jì)算機(jī)基礎(chǔ)教育研究會(huì)2007年會(huì)暨全國(guó)高校計(jì)算機(jī)基礎(chǔ)教育2007論壇, 2007.