相林 張菲菲
關鍵詞:“自頂向下”;案例教學法;結構
中圖分類號:G642 文獻標識碼:A
文章編號:1009-3044(2023)14-0143-04
0 引言
程序設計語言是軟件開發(fā)的直接工具,也是高校計算機專業(yè)開設的必修課程之一[1]。程序語言課程內容豐富、規(guī)則繁多,課程教學有一定的難度。許多高校都對課程進行了教學改革,如以在線網絡為依托,對教學內容、教學方法和考核方式進行課程改革[2],或者將課程教學與教師的科研相結合,實現(xiàn)“產學研”一體化[3-5],還有院校以案例教學法來提高程序設計課程教學質量[6-7]。但是,由于課程抽象且理論性較強,學生對課程的理解和掌握存在較大難度,并且很難在解決實際問題時靈活使用。本文深入分析當前課程教學環(huán)節(jié)中的問題,以具體案例的分析解決為例,討論將“自頂向下”的程序設計思想應用于C++程序設計語言的教學中,引導學生對問題進行思考分析,將大問題分解為若干小問題,并逐個解決小問題,最終完成大問題的求解。根據分解的步驟,先設計算法,再設計程序,得到目標代碼。將正確編寫代碼這一最終的課程學習目標,分解為文字表述的算法設計和C++ 程序設計語言實現(xiàn)的程序設計兩步驟,降低學生的學習難度,逐步提高學生的編程能力。
本文根據教學目標設計案例,以喜聞樂見的熱門娛樂節(jié)目為切入點,激發(fā)學生的學習興趣,并引出設計投票器的目標問題。利用“自頂向下”的思想設計程序后,通過對學習過程的總結歸納,讓學生深刻理解新知識點的內涵與外延,并將知識點的學習升華到精神品質的教育,從數(shù)據的和諧存儲上升到以和諧的態(tài)度對待萬事萬物,再立足到本專業(yè)的學習應以創(chuàng)新的精神發(fā)展人工智能,使之與人類和諧共存的職業(yè)精神教育,從而將正確的科學發(fā)展觀自然融入教學過程,在教授新知識的同時完成對學生的思想教育及職業(yè)素養(yǎng)的培養(yǎng)。
1 教學背景
為了形成知識體系,每個章節(jié)的教學前都應介紹該章節(jié)在整個課程中的地位和作用,以便與前面的章節(jié)聯(lián)系同時引出后續(xù)的內容[8-9]。如C++程序設計中的結構及其應用,該部分內容是C++程序設計語言課程的重要內容,也是學習面向對象程序設計的核心概念——“類”的基礎,更是從面向過程程序設計走向面向對象程序設計的口岸與橋梁,起著承前啟后的重要作用[10]。理解結構的概念,對于后續(xù)學習面向對象設計中的核心概念——對象,有著關鍵作用。
首先,該部分內容的教學目標分為知識目標、能力目標和情感目標三部分。具體而言,知識目標包括掌握結構的概念及作用,學會聲明結構類型、定義結構變量和訪問結構變量的成員兩大方面。能力目標是利用結構實現(xiàn)多類型組合數(shù)據的存儲及操作,學會編寫結構相關代碼并調試,能利用結構解決實際問題。情感目標是要在編程過程中,和諧、高效地進行溝通與合作,錘煉意志,培養(yǎng)扎實嚴謹?shù)目茖W態(tài)度和健全人格,同時享受編程的樂趣,懷有為中國軟件產業(yè)助力的遠大理想?;?018級-2020級學生期末試卷和同行教師教學反饋的數(shù)據得出,本部分內容教學的重點和難點如表1所示。
2 案例分析——“中國好聲音”投票器
課程的自然引入是上好一節(jié)課的基礎[11]。C++程序設計語言是一門在解決實際問題的過程中發(fā)展起來的學科[12],從貼近學生課余生活的問題及案例入手,最能激發(fā)學生的興趣,并使其印象深刻。例如,以近年來廣受年輕人喜愛的娛樂節(jié)目——“中國好聲音”的觀眾投票器設計為案例,從問題的引出、程序的設計、結果的驗證,一步步帶領學生解決切實的實際問題,體會理論內容在實際問題中的應用,激發(fā)學生的興趣,調動同學們學習的積極性和主動性,往往會達到事半功倍的效果。
案例描述:在備受歡迎的選秀類節(jié)目——“中國好聲音”2015年度巔峰之夜總決賽中,有4個戰(zhàn)隊5名歌手,包括周杰倫戰(zhàn)隊的李安、陳梓童,那英戰(zhàn)隊的張磊,哈林戰(zhàn)隊的譚軒轅及汪峰戰(zhàn)隊的貝貝。通過觀眾投票,張磊以11113票進入巔峰對決,并最終獲得年度總冠軍。如何設計程序在這場參與投票人數(shù)多達數(shù)萬人的比賽中,用計算機自動實現(xiàn)票數(shù)統(tǒng)計得到冠軍?
通過案例的描述,學生自然會有疑問:如何以選手為基本單元進行票數(shù)的存儲和訪問,從而實現(xiàn)票數(shù)的統(tǒng)計,進而得出冠軍的姓名?通過分析案例輸入數(shù)據的存儲形式,以示疑、質疑、釋疑的教學方式,引導學生思考用學過的數(shù)組儲存數(shù)據的弊端,啟發(fā)學生使用結構解決存儲問題,實現(xiàn)新舊知識點的銜接,完成教學內容的自然切入。具體而言,對于一名選手,需要存儲其編號、姓名和得票數(shù)三方面信息(圖2(a)),而它們的類型并不完全相同,因此用三個數(shù)組進行數(shù)據存儲極為不便。進而引導學生考慮使用結構,將描述一名選手所需的不同類型數(shù)據存儲在一起,實現(xiàn)以選手為基本單元進行數(shù)據的存儲及訪問(圖2(b))。因此,定義結構類型Singer,包含選手編號ID、選手姓名name和得票數(shù)voteNumber三個成員。
進一步,要存儲5名選手的信息,而選手信息的類型相同,啟發(fā)學生考慮使用數(shù)組完成數(shù)據的存放,從而引出結構數(shù)組的使用。定義維度為5的Singer類型的結構數(shù)組data(如圖3),數(shù)組的每個元素都是Singer 類型的數(shù)據,分別包含選手編號ID、選手姓名name和得票數(shù)voteNumber三個成員。結合案例,根據問題需求,循序漸進引導學生思考問題,找到解決問題的辦法。在解決問題的同時,讓學生從舊知識自然過渡到新知識,在已有知識儲備的基礎上,學習并靈活使用新知識,從而對課程內容有更為深刻的理解和把握。
3“自頂向下”的算法設計
利用自頂向下的程序設計思想,整個投票過程的實現(xiàn)可分解為4個模塊(圖4)。首先,以選手為單位,存儲每名選手的編號、姓名及得票數(shù)三方面初始信息,初始得票數(shù)都為0。然后,根據選票上的姓名統(tǒng)計各選手獲得的票數(shù),保存各位選手的得票數(shù)。接著,根據上一步的統(tǒng)計結果,查找得票數(shù)最多的選手。最后,輸出每位選手的票數(shù),并根據上一步找到的冠軍編號,輸出冠軍姓名。
至此,利用“自頂向下”的思想,完成了模擬投票整個過程的程序設計。通過案例,學生能夠理解結構的概念及使用領域,在語句中通過點運算的設計,訪問和操作結構變量的成員,讓學生通過實際操作更加深刻感受到結構變量的定義及運算,更利于把握知識重點和難點。而在整個程序設計過程中,通過宏觀設計對大任務分解,再對小模塊細化,實現(xiàn)投票器的程序開發(fā),讓學生學會使用自頂向下這一重要的程序設計思想。
最后,通過對結構的學習,學生了解到可以將兩種及以上不同類型的數(shù)據和諧地存放在一起,既可以整體處理又可以按成員訪問,求大同存小異,體現(xiàn)了辯證唯物主義和諧觀。和而不同、和實生物,和諧是中國的文化傳統(tǒng),更是社會主義核心價值觀的重要元素。在當前人工智能的新時代,作為計算機從業(yè)者要以創(chuàng)新精神發(fā)展人工智能,使其為人類服務的同時與人類和諧共存。
5 結束語
本文以設計“中國好聲音”投票器為例,展示了將課程內容——結構,融入案例分析與求解的全過程,將學生喜聞樂見的娛樂節(jié)目與課程內容聯(lián)系起來,激發(fā)學生的學習興趣,提高課堂教學效果。通過知識點的自然融入,深入淺出,層層遞進,逐步講授新知識,充分展示知識點的實際應用,讓學生深刻體會知識點在實際問題中的使用契機及方法。在案例分析過程中,將“自頂向下”的程序設計思想融于案例分析解決的過程中,著重培養(yǎng)學生形成正確的程序設計思維模式,不單著眼于編寫某條語句,而是自主設計算法進行編程,學會分析和解決問題。教學中,將課程內容與思政聯(lián)系起來,以數(shù)據的融合升華到唯物主義和諧觀,在教授知識的同時,培養(yǎng)學生形成正確的世界觀和人生觀,完成一名合格教師“傳道、授業(yè)、解惑”的使命。