国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

“數(shù)據(jù)結(jié)構(gòu)”課程中提高學(xué)生編程能力的方法

2021-01-16 16:32鄭福妍鄭寶民
黑河學(xué)院學(xué)報(bào) 2021年11期
關(guān)鍵詞:數(shù)據(jù)結(jié)構(gòu)編程結(jié)構(gòu)

鄭福妍 鄭寶民 張 寧

(黑河學(xué)院 a.計(jì)算機(jī)與信息工程學(xué)院;b.現(xiàn)代教育技術(shù)中心,黑龍江 黑河 164300)

一、“數(shù)據(jù)結(jié)構(gòu)”課程

“數(shù)據(jù)結(jié)構(gòu)”課程是計(jì)算機(jī)相關(guān)專(zhuān)業(yè)中具有較強(qiáng)理論性和操作性的一門(mén)專(zhuān)業(yè)基礎(chǔ)課,我國(guó)一些高校涉及編程課程的專(zhuān)業(yè)計(jì)劃中——如電子技術(shù)專(zhuān)業(yè),也增加了“數(shù)據(jù)結(jié)構(gòu)”課程,將其作為程序設(shè)計(jì)開(kāi)發(fā)的入門(mén)課程。“數(shù)據(jù)結(jié)構(gòu)”課程知識(shí)點(diǎn)非常繁雜,主要研究的是將實(shí)際遇到的問(wèn)題進(jìn)行分析,抽象為各種數(shù)據(jù)模型的過(guò)程,并根據(jù)實(shí)際操作的不同特點(diǎn)選擇相應(yīng)的存儲(chǔ)結(jié)構(gòu)進(jìn)行存儲(chǔ),同一問(wèn)題可以建立不同的抽象即邏輯結(jié)構(gòu),即使抽象類(lèi)型相同,當(dāng)選擇不同的存儲(chǔ)結(jié)構(gòu)時(shí),在最終實(shí)現(xiàn)的程序思想方面也會(huì)有較大的不同,通過(guò)數(shù)據(jù)結(jié)構(gòu)課程的學(xué)習(xí),可以培養(yǎng)學(xué)生的發(fā)散思維能力、邏輯思維能力及編程能力,數(shù)據(jù)結(jié)構(gòu)課程可以讓人們?cè)跊](méi)有編寫(xiě)程序代碼之前,就知道該程序代碼的優(yōu)劣,可以對(duì)程序中存在的問(wèn)題在時(shí)間和空間角度進(jìn)行分析及改進(jìn),設(shè)計(jì)出效率最優(yōu)的程序代碼。都說(shuō)程序等于七分?jǐn)?shù)據(jù)結(jié)構(gòu)加上三分算法,可見(jiàn),“數(shù)據(jù)結(jié)構(gòu)”課程對(duì)編程相關(guān)專(zhuān)業(yè)的學(xué)習(xí)是非常重要的。該課程以提高學(xué)生的編程能力為主要培養(yǎng)目標(biāo),以程序設(shè)計(jì)為基礎(chǔ),對(duì)學(xué)生進(jìn)行較復(fù)雜程序設(shè)計(jì)的訓(xùn)練。

二、參與式教學(xué)法,提高學(xué)生理論知識(shí)的學(xué)習(xí)

“數(shù)據(jù)結(jié)構(gòu)”課程理論知識(shí)點(diǎn)較多,涉及的內(nèi)容有集合、數(shù)組、字符串、線(xiàn)性表、廣義表、棧、隊(duì)列、二叉樹(shù)、圖等,操作也非常繁瑣,如何在教學(xué)中讓學(xué)生掌握其繁雜的內(nèi)容,采用傳統(tǒng)的教師講、學(xué)生聽(tīng)的方法是遠(yuǎn)遠(yuǎn)不夠的,各高校教師為提高學(xué)生課堂學(xué)習(xí)效果,提出了很多種創(chuàng)新的教學(xué)方法,筆者在實(shí)際教學(xué)中采用了學(xué)生參與式教學(xué)方法,該種方法將課堂主體由教師轉(zhuǎn)換成學(xué)生,學(xué)生由一個(gè)被動(dòng)接受者的角色轉(zhuǎn)換為一個(gè)自主、探究學(xué)習(xí)者的角色。這兩種角色的轉(zhuǎn)換實(shí)質(zhì)是學(xué)生自主完成學(xué)習(xí)內(nèi)容進(jìn)行創(chuàng)新思維的過(guò)程。參與型教學(xué)就是以學(xué)生的探索嘗試為核心來(lái)設(shè)計(jì)各教學(xué)環(huán)節(jié),引導(dǎo)學(xué)生在參與過(guò)程中通過(guò)自身體驗(yàn)不斷思考,以此提出新觀點(diǎn)、掌握其知識(shí)脈絡(luò),使學(xué)生成為探索、創(chuàng)新、學(xué)習(xí)的主體[1]。參與式教學(xué)過(guò)程中的關(guān)鍵環(huán)節(jié)是如何調(diào)動(dòng)學(xué)生的參與度。

在教學(xué)過(guò)程中,抓住本門(mén)課程的兩個(gè)核心概念邏輯結(jié)構(gòu)和物理結(jié)構(gòu)來(lái)展開(kāi),整門(mén)課程的講解以算法實(shí)現(xiàn)為軸進(jìn)行串聯(lián),筆者的理論課講解過(guò)程如下。

1.課程介紹

講解數(shù)據(jù)結(jié)構(gòu)的基本概念,介紹本門(mén)課程學(xué)習(xí)的主要內(nèi)容,需要達(dá)到的教學(xué)目標(biāo),本門(mén)課程在本專(zhuān)業(yè)中的地位,以及工作中的用途等,讓學(xué)生學(xué)習(xí)課程之前就了解本門(mén)課程的作用,能夠把握學(xué)習(xí)的主線(xiàn)來(lái)展開(kāi)學(xué)習(xí)。

2.教材介紹

簡(jiǎn)單介紹所使用教材的每章內(nèi)容及每章之間的關(guān)聯(lián),從編者角度出發(fā),向?qū)W生說(shuō)明教材的組織結(jié)構(gòu),讓學(xué)生在學(xué)習(xí)之前就知道本門(mén)課應(yīng)該掌握的核心內(nèi)容是什么,在學(xué)習(xí)過(guò)程中有側(cè)重地學(xué)習(xí)。

3.有選擇地進(jìn)行講解

數(shù)據(jù)結(jié)構(gòu)的邏輯結(jié)構(gòu)大致包括集合、線(xiàn)性結(jié)構(gòu)和非線(xiàn)性結(jié)構(gòu),從線(xiàn)性結(jié)構(gòu)入手進(jìn)行講解,將線(xiàn)性表的相關(guān)概念、存儲(chǔ)結(jié)構(gòu)的定義、所能進(jìn)行的操作及算法思想進(jìn)行詳細(xì)講解,對(duì)于算法實(shí)現(xiàn),讓學(xué)生自己試著去寫(xiě),教師側(cè)重于指導(dǎo)。

對(duì)于棧和隊(duì)列這兩種線(xiàn)性結(jié)構(gòu),重點(diǎn)講解其與線(xiàn)性表的區(qū)別,其他的學(xué)習(xí)內(nèi)容全都由學(xué)生自己獨(dú)立完成,教師需要做好引導(dǎo)環(huán)節(jié)的工作,可以設(shè)計(jì)不同層次的問(wèn)題,引導(dǎo)學(xué)生一步一步地學(xué)習(xí),當(dāng)學(xué)生提出問(wèn)題時(shí),不是第一時(shí)間給予解答,而是讓同學(xué)之間先進(jìn)行探討,學(xué)生各抒己見(jiàn)后教師再進(jìn)行總結(jié),這樣能夠讓學(xué)生深入地思考,從而激發(fā)學(xué)習(xí)興趣。

線(xiàn)性結(jié)構(gòu)講解完后,簡(jiǎn)單介紹一下集合類(lèi)型,本章知識(shí)點(diǎn)不用投入太多的時(shí)間與精力,在集合部分的代碼實(shí)現(xiàn)中,查找操作是核心思想,讓同學(xué)們注意該算法,在后面章節(jié)中還會(huì)對(duì)該算法進(jìn)行重點(diǎn)講解。

接下來(lái)是非線(xiàn)性結(jié)構(gòu)的學(xué)習(xí)——樹(shù)和二叉樹(shù),重點(diǎn)是二叉樹(shù)的概念及應(yīng)用,二叉樹(shù)的性質(zhì)讓學(xué)生自己進(jìn)行總結(jié),這些性質(zhì)涉及的知識(shí)點(diǎn)主要是高中階段所學(xué)習(xí)的等比序列和排列組合的內(nèi)容,通過(guò)這部分內(nèi)容可以看出,計(jì)算機(jī)和數(shù)學(xué)是不分家的,要想學(xué)好計(jì)算機(jī),首先要有扎實(shí)的數(shù)學(xué)基礎(chǔ),否則在一些計(jì)算機(jī)理論知識(shí)的理解上會(huì)存在問(wèn)題,將無(wú)法順利地進(jìn)行后續(xù)內(nèi)容的學(xué)習(xí),這也是教師為什么總說(shuō),通過(guò)計(jì)算機(jī)的學(xué)習(xí)能夠有效提高數(shù)學(xué)能力、邏輯思維能力及計(jì)算能力的主要原因。二叉樹(shù)在現(xiàn)實(shí)生活中的應(yīng)用非常多,如人機(jī)對(duì)弈中每一步棋子如何進(jìn)行布局,最終勝出;如何利用二叉樹(shù)對(duì)一組數(shù)列進(jìn)行排序;在現(xiàn)代通信技術(shù)中如何進(jìn)行字符編碼等,在對(duì)這部分知識(shí)進(jìn)行講解時(shí),多列舉一些學(xué)生了解并感興趣的例子,以此激發(fā)學(xué)生學(xué)習(xí)的興趣。

圖的存儲(chǔ)及算法實(shí)現(xiàn)是難點(diǎn),這部分內(nèi)容的學(xué)習(xí)采用的方法是:反復(fù)閱讀和理解相應(yīng)算法的計(jì)算機(jī)語(yǔ)言描述,要注意圖和樹(shù)型結(jié)構(gòu)、線(xiàn)性結(jié)構(gòu)之間的相同點(diǎn)及區(qū)別。

4.及時(shí)進(jìn)行總結(jié)

每個(gè)知識(shí)點(diǎn)之間都是有關(guān)聯(lián)的,講解完一種邏輯結(jié)構(gòu)后,一定要對(duì)其進(jìn)行總結(jié),并與前面學(xué)習(xí)過(guò)的其他類(lèi)型的邏輯結(jié)構(gòu)進(jìn)行對(duì)比,找到異同及各自應(yīng)用的場(chǎng)合。

“數(shù)據(jù)結(jié)構(gòu)”課程學(xué)習(xí)結(jié)束后,能夠?yàn)槿藗兘鉀Q一個(gè)問(wèn)題提供多種不同的解題思路。因此,通過(guò)數(shù)據(jù)結(jié)構(gòu)課程的學(xué)習(xí),能夠有效鍛煉并提高學(xué)生的發(fā)散思維能力,在解決實(shí)際問(wèn)題時(shí),會(huì)使設(shè)計(jì)者在面對(duì)問(wèn)題時(shí)考慮得更加全面,不會(huì)造成思維的局限性。通過(guò)本門(mén)課程的學(xué)習(xí),學(xué)生掌握了各種數(shù)據(jù)模型在各種存儲(chǔ)結(jié)構(gòu)下算法實(shí)現(xiàn)的對(duì)比分析,能夠做到在程序代碼編寫(xiě)之前就明確哪種解決方案是最優(yōu)的,接下來(lái)可以節(jié)省大量試錯(cuò)的時(shí)間,將全部精力投入到程序代碼的編寫(xiě)中,以此設(shè)計(jì)開(kāi)發(fā)出效率最優(yōu)的程序代碼。

三、分層式任務(wù),加強(qiáng)學(xué)生實(shí)踐能力的鍛煉

理論知識(shí)的理解非常重要,但只有理論知識(shí),不結(jié)合實(shí)踐,也只是紙上談兵,在具體代碼實(shí)現(xiàn)時(shí)還是無(wú)從下手,所以,在教學(xué)中還要注重實(shí)際環(huán)節(jié)的練習(xí),因?yàn)槊棵瑢W(xué)編程能力有所不同,每堂課應(yīng)該布置不同難度的任務(wù),讓學(xué)生一步一步地進(jìn)行代碼的實(shí)現(xiàn),即使是編程能力較強(qiáng)的同學(xué)也建議他們從最簡(jiǎn)單的任務(wù)開(kāi)始,筆者在實(shí)踐教學(xué)中是如下設(shè)置的:每堂課設(shè)置一組實(shí)驗(yàn)項(xiàng)目,每個(gè)任務(wù)的難度不同,但都圍繞同一問(wèn)題展開(kāi),當(dāng)一個(gè)任務(wù)完成后,在此基礎(chǔ)上進(jìn)行些許改動(dòng),就完成了下一個(gè)任務(wù),依次完成最終的任務(wù),該種方法將一個(gè)大的、復(fù)雜問(wèn)題分解為若干個(gè)遞進(jìn)問(wèn)題,一步一步地引導(dǎo)學(xué)生完成,該種方法的運(yùn)用使學(xué)生不再感到每堂課的任務(wù)量大,無(wú)法下手,下面列舉兩個(gè)例子進(jìn)行說(shuō)明。

示例一:在線(xiàn)性表的代碼實(shí)現(xiàn)過(guò)程中,采用模塊化的設(shè)計(jì)思想,將每個(gè)操作定義為一個(gè)函數(shù),然后通過(guò)主函數(shù)調(diào)用各個(gè)函數(shù),根據(jù)該任務(wù)可以設(shè)置以下任務(wù):

任務(wù)一:將所有的庫(kù)函數(shù)調(diào)用、主函數(shù)及線(xiàn)性表所有操作函數(shù)定義在一個(gè)文件中(教材有原代碼)。

任務(wù)二:將所有的庫(kù)函數(shù)調(diào)用、主函數(shù)定義在一個(gè)文件中,將線(xiàn)性表所有操作函數(shù)定義在一個(gè).C文件中。

任務(wù)三:將所有的庫(kù)函數(shù)調(diào)用、主函數(shù)定義在一個(gè)文件中,將線(xiàn)性表所有操作函數(shù)定義在一個(gè).H文件中。

任務(wù)四:對(duì)任務(wù)三中的主函數(shù)進(jìn)行重新編寫(xiě),來(lái)解決現(xiàn)實(shí)生活中的某一具體問(wèn)題。如銀行在辦理業(yè)務(wù)時(shí),用戶(hù)需要按照先后順序進(jìn)行編號(hào),以此確定操作順序,但VIP用戶(hù)具有優(yōu)先權(quán),不需要排隊(duì),通過(guò)線(xiàn)性表結(jié)構(gòu)來(lái)模擬實(shí)現(xiàn)這一操作過(guò)程,存儲(chǔ)結(jié)構(gòu)不限。

示例二:利用棧實(shí)現(xiàn)將十進(jìn)制整數(shù)轉(zhuǎn)換為二至九之間的任意進(jìn)制數(shù)的實(shí)現(xiàn),根據(jù)此問(wèn)題可以設(shè)置以下一組任務(wù)。

任務(wù)一:在主函數(shù)中定義好要轉(zhuǎn)換的十進(jìn)制數(shù)及要轉(zhuǎn)換后的進(jìn)制(教材有原代碼)。

任務(wù)二:在主函數(shù)中通過(guò)scanf( )函數(shù)和printf( )函數(shù)輸入要轉(zhuǎn)換的十進(jìn)制數(shù)及要轉(zhuǎn)換后的進(jìn)制數(shù)。

任務(wù)三:實(shí)現(xiàn)將十進(jìn)制整數(shù)轉(zhuǎn)換為二至十六之間的任意進(jìn)制數(shù)。

任務(wù)四:計(jì)算機(jī)不斷發(fā)展,當(dāng)計(jì)算機(jī)中數(shù)據(jù)不再局限于十六進(jìn)制,而是產(chǎn)生了三十二進(jìn)制時(shí),思考三十二進(jìn)制將如何進(jìn)行編碼,并使用棧來(lái)實(shí)現(xiàn),將用戶(hù)輸入的任意十進(jìn)制轉(zhuǎn)換為二至三十二進(jìn)制之間的任意進(jìn)制。

任務(wù)五:在任務(wù)四的實(shí)現(xiàn)中,將棧中所存儲(chǔ)的數(shù)據(jù)類(lèi)型定義為int型和char型,分別如何實(shí)現(xiàn)?

在實(shí)踐環(huán)節(jié)即使編程語(yǔ)言功底差的同學(xué),也可以完成任務(wù)一,因?yàn)檫@些源代碼在大部分教材中都有,雖然其編程能力差,但通過(guò)文件的創(chuàng)建、代碼的輸入、編譯、運(yùn)行在這一過(guò)程中也能收獲很多,當(dāng)編譯遇到問(wèn)題時(shí),任課教師可以對(duì)其進(jìn)行指導(dǎo)講解,以提高其編程能力,學(xué)生們就能從只能完成任務(wù)一,然后完成任務(wù)二,逐漸完成任務(wù)三、任務(wù)四等所有的任務(wù)要求,如果課堂時(shí)間有限,同學(xué)們可以課下完成,將實(shí)踐過(guò)程中遇到的問(wèn)題記錄下來(lái),在課下詢(xún)問(wèn)同學(xué)或找老師幫助解決。

在每堂實(shí)驗(yàn)課結(jié)束前,任課教師都要根據(jù)學(xué)生實(shí)踐情況進(jìn)行總結(jié),并提出下一步要求,為在課堂上完成所有任務(wù)的學(xué)生布置課下思考、練習(xí)、實(shí)踐內(nèi)容。在課下練習(xí)時(shí),鼓勵(lì)學(xué)生不局限于書(shū)本的定義形式,讓學(xué)生發(fā)散思維,自己進(jìn)行定義并代碼實(shí)現(xiàn),當(dāng)學(xué)生定義形式或者實(shí)現(xiàn)思想與教材不同時(shí),可以讓同學(xué)們分析該算法與教材上算法的區(qū)別及優(yōu)劣。

在分層次任務(wù)教學(xué)中,第一層次的任務(wù)是最簡(jiǎn)單的,一般情況下程序代碼已經(jīng)在教材上給出,或者由任課教師給出,即使基礎(chǔ)差只要按照任課教師的要求進(jìn)行練習(xí)還是有收獲的。每個(gè)問(wèn)題所設(shè)置的任務(wù)數(shù)不等,每層任務(wù)之間差距較小,只要在前一任務(wù)基礎(chǔ)上進(jìn)行小小的改動(dòng),便可以完成下一級(jí)任務(wù),不會(huì)讓學(xué)生感覺(jué)太吃力,教師通過(guò)一個(gè)任務(wù)接著一個(gè)任務(wù)的引導(dǎo),讓學(xué)生最終完成所有任務(wù)。如果在實(shí)踐中,直接讓學(xué)生完成最后一個(gè)任務(wù),學(xué)生可能會(huì)有無(wú)從下手的感覺(jué),這樣會(huì)嚴(yán)重打擊學(xué)生學(xué)習(xí)的積極性,特別是編程能力較差的同學(xué),直接放棄,不再?lài)L試程序代碼的編寫(xiě)與實(shí)現(xiàn)。教學(xué)過(guò)程本來(lái)就是師生之間的一項(xiàng)雙邊活動(dòng),在教學(xué)過(guò)程中,要求教師以觀察、詢(xún)問(wèn)、交談等多種方式來(lái)了解學(xué)生對(duì)知識(shí)、能力、情感等方面的信息,通過(guò)學(xué)生反饋的這些信息,任課教師能夠了解學(xué)生對(duì)知識(shí)等方面的掌握情況,任課教師能及時(shí)調(diào)節(jié)教學(xué)方法和教學(xué)手段,達(dá)到預(yù)期的教學(xué)目標(biāo)。學(xué)生通過(guò)該過(guò)程應(yīng)多聽(tīng)、多說(shuō)、多思考、多提問(wèn)、多總結(jié),通過(guò)這一過(guò)程能夠鍛煉和提高學(xué)生的邏輯思維能力、總結(jié)能力、語(yǔ)言表達(dá)能力、文獻(xiàn)檢索能力等方面的能力,真正達(dá)到教書(shū)育人的目的[2]。

四、結(jié)語(yǔ)

綜上所述,計(jì)算機(jī)編程能力對(duì)于信息化社會(huì)的人們來(lái)說(shuō)非常重要,處理信息能力的強(qiáng)弱決定了在社會(huì)中生存能力的高低,在信息處理過(guò)程中,計(jì)算機(jī)編程思維成為人們必須掌握的一項(xiàng)基本技能,本文針對(duì)計(jì)算機(jī)專(zhuān)業(yè)的“數(shù)據(jù)結(jié)構(gòu)”課程,講解了如何在教學(xué)中培養(yǎng)學(xué)生的編程能力及計(jì)算思維能力,其他任課教師可以將該種方法引入到所授課程中,只有學(xué)生學(xué)習(xí)的參與度提高了,才能主動(dòng)去學(xué)習(xí),去接受知識(shí),在學(xué)習(xí)過(guò)程中做到學(xué)習(xí)目標(biāo)明確,達(dá)到事半功倍的學(xué)習(xí)效果。

在“數(shù)據(jù)結(jié)構(gòu)”課程教學(xué)中講解了大量使用計(jì)算機(jī)編程來(lái)解決現(xiàn)實(shí)生活中的實(shí)際問(wèn)題的案列,通過(guò)本門(mén)課程的學(xué)習(xí),對(duì)學(xué)生以后的工作也有很大幫助;“數(shù)據(jù)結(jié)構(gòu)”課程中思維能力的鍛煉,讓學(xué)生在自主創(chuàng)業(yè)時(shí),思維更加嚴(yán)謹(jǐn),考慮問(wèn)題更加全面,使創(chuàng)業(yè)的成功率更高。

猜你喜歡
數(shù)據(jù)結(jié)構(gòu)編程結(jié)構(gòu)
《形而上學(xué)》△卷的結(jié)構(gòu)和位置
數(shù)據(jù)結(jié)構(gòu)線(xiàn)上線(xiàn)下混合教學(xué)模式探討
編程,是一種態(tài)度
元征X-431實(shí)測(cè):奔馳發(fā)動(dòng)機(jī)編程
編程小能手
紡織機(jī)上誕生的編程
為什么會(huì)有“數(shù)據(jù)結(jié)構(gòu)”?
論結(jié)構(gòu)
論《日出》的結(jié)構(gòu)
高職高專(zhuān)數(shù)據(jù)結(jié)構(gòu)教學(xué)改革探討