中文久久久字幕|亚洲精品成人 在线|视频精品5区|韩国国产一区

歡迎來到優(yōu)發(fā)表網(wǎng),期刊支持:400-888-9411 訂閱咨詢:400-888-1571股權(quán)代碼(211862)

購物車(0)

期刊大全 雜志訂閱 SCI期刊 期刊投稿 出版社 公文范文 精品范文

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

時(shí)間:2023-08-08 16:46:01

序論:在您撰寫程序設(shè)計(jì)的結(jié)構(gòu)時(shí),參考他人的優(yōu)秀作品可以開闊視野,小編為您整理的7篇范文,希望這些建議能夠激發(fā)您的創(chuàng)作熱情,引導(dǎo)您走向新的創(chuàng)作高度。

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

第1篇

關(guān)鍵詞:VB選擇結(jié)構(gòu);IF語句;評(píng)價(jià)

Visual Basic(簡(jiǎn)稱VB)是面向?qū)ο蟮目梢暬幊陶Z言,它簡(jiǎn)單易學(xué)的語法深受廣大編程愛好者的青睞,同時(shí)也是中職學(xué)校計(jì)算機(jī)專業(yè)學(xué)生的一門必修課程。通過學(xué)習(xí)VB程序設(shè)計(jì),培養(yǎng)學(xué)生的程序設(shè)計(jì)能力和開發(fā)軟件的興趣。VB有三種基本的程序控制結(jié)構(gòu):順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。當(dāng)一個(gè)問題涉及到對(duì)條件進(jìn)行分析、比較、判斷,并根據(jù)判斷所得的結(jié)果采取相應(yīng)的處理方式,這時(shí)就要用選擇結(jié)構(gòu)來解決問題。在教學(xué)過程中如何突破VB選擇結(jié)構(gòu)教學(xué)的重點(diǎn)、難點(diǎn),如何讓初學(xué)者理解選擇結(jié)構(gòu)的執(zhí)行過程,掌握選擇結(jié)構(gòu)的應(yīng)用,培養(yǎng)他們的邏輯思維能力、實(shí)踐操作能力和解決實(shí)際問題的能力,這是筆者在教學(xué)中一直思考的問題?,F(xiàn)就結(jié)合VB選擇結(jié)構(gòu)中IF語句教學(xué)的主要環(huán)節(jié)進(jìn)行探討。

一、實(shí)例導(dǎo)入,煥發(fā)熱情

中職學(xué)生的知識(shí)基礎(chǔ)較差,普遍學(xué)習(xí)興趣不高。如果在選擇結(jié)構(gòu)教學(xué)中按照傳統(tǒng)的先講解IF語句的格式和功能,再進(jìn)行實(shí)踐操作,則未必能取得較好的教學(xué)效果。興趣是學(xué)習(xí)的原動(dòng)力,這就需要計(jì)算機(jī)教師暫時(shí)拋開晦澀難懂的概念和語法,采用生活化的實(shí)例來煥發(fā)學(xué)生的學(xué)習(xí)熱情。

新課之前,首先通過局域網(wǎng)分發(fā)幾個(gè)用IF語句編寫的VB可執(zhí)行程序到學(xué)生電腦上,如:手機(jī)價(jià)格競(jìng)猜游戲,讓學(xué)生一開始就動(dòng)手體驗(yàn)選擇結(jié)構(gòu)的魅力。學(xué)生運(yùn)行程序的過程仿佛置身于游戲中,他們結(jié)合實(shí)際生活經(jīng)驗(yàn)很輕松便推斷出:如果輸入的價(jià)格大于1999,則提示“猜高了”;如果輸入的價(jià)格小于1999,則提示“猜低了”;如果輸入的價(jià)格等于1999,則提示“恭喜您,猜對(duì)了”。學(xué)生用自己的語言思路清晰地總結(jié)出競(jìng)猜過程中的三種情況,教師順勢(shì)引出條件判斷這個(gè)概念。通過講解這個(gè)例子讓學(xué)生對(duì)價(jià)格判斷和提示信息對(duì)應(yīng)起來,理解根據(jù)不同的判斷結(jié)果執(zhí)行不同的語句。通過實(shí)例導(dǎo)入,學(xué)生對(duì)VB編程產(chǎn)生了好奇心,教師結(jié)合實(shí)例讓學(xué)生理解VB選擇結(jié)構(gòu)的執(zhí)行過程,從而將將學(xué)生的被動(dòng)學(xué)習(xí)轉(zhuǎn)化為主動(dòng)學(xué)習(xí)。

二、加工半成品,突出重點(diǎn)

VB選擇結(jié)構(gòu)教學(xué)中,如果給學(xué)生一個(gè)完整的任務(wù)書,那么按照實(shí)際的流程,學(xué)生在任務(wù)前期首先要進(jìn)行界面設(shè)計(jì)、屬性設(shè)置以及一些順序結(jié)構(gòu)語句的編寫等。由于學(xué)生的理解程度不一樣,完成進(jìn)度也不一樣,有些學(xué)生花長(zhǎng)時(shí)間停留在前期工作中,一節(jié)課下來都沒有進(jìn)入到選擇結(jié)構(gòu)代碼的編寫,這就影響到了選擇結(jié)構(gòu)學(xué)習(xí)目標(biāo)的落實(shí),評(píng)價(jià)也變的非常困難。針對(duì)這一情況,VB選擇結(jié)構(gòu)IF語句教學(xué)中采用“半成品”加工策略,給學(xué)生一個(gè)不完整的任務(wù),僅對(duì)IF分支語句環(huán)節(jié)進(jìn)行“留白”,“留白”部分即教學(xué)的重點(diǎn)。學(xué)生在“半成品”到“成品”的加工過程中既學(xué)到了知識(shí)、掌握了重點(diǎn),又提高了實(shí)踐效率、獲得了成功的體驗(yàn)。

如在IF雙分支語句教學(xué)中,采用實(shí)例:商城迎新年促銷活動(dòng),單價(jià)滿200元減40,不滿200元?jiǎng)t按原價(jià)出售,根據(jù)商品原價(jià)求實(shí)付金額。教師給出界面和部分代碼, 對(duì)代碼中IF雙分支語句部分進(jìn)行“留白”。教師引導(dǎo)學(xué)生自主探究,分析問題,學(xué)生由活動(dòng)規(guī)則總結(jié)出兩種判斷情況(a>=200和a

三、條件遷移,化解難點(diǎn)

多分支IF語句的應(yīng)用是VB選擇結(jié)構(gòu)IF語句的難點(diǎn)。教學(xué)中若采用條件遷移法,即通過在已掌握的雙分支IF語句實(shí)例的基礎(chǔ)上對(duì)判斷條件進(jìn)行增加或改變來過渡到新的例題,從而降低多分支語句應(yīng)用的難度。這樣的方法符合學(xué)生的認(rèn)知規(guī)律和發(fā)展規(guī)律,讓學(xué)生對(duì)多分支IF語句的認(rèn)識(shí)、理解、運(yùn)用有一個(gè)逐步深入的“螺旋式”上升的過程。

如商城迎新年促銷活動(dòng),在原有基礎(chǔ)上增加條件:?jiǎn)蝺r(jià)滿1000元的商品在享受滿200減40后再享受9折優(yōu)惠?;趯W(xué)生之前已掌握了雙分支IF語句應(yīng)用,結(jié)合已有的數(shù)學(xué)知識(shí),解決問題的方法和步驟便得到了簡(jiǎn)化,并能根據(jù)實(shí)際情況寫出邏輯表達(dá)式和相應(yīng)的執(zhí)行語句。如對(duì)百分制成績(jī)進(jìn)行等級(jí)評(píng)定,在一開始的雙分支IF語句(及格和不及格)的基礎(chǔ)上通過對(duì)百分制成績(jī)的分?jǐn)?shù)段范圍進(jìn)行逐步細(xì)化,對(duì)應(yīng)的評(píng)定等級(jí)則也有所變化(及格、良好、優(yōu)秀),從而過渡到多分支IF語句。通過簡(jiǎn)單的改進(jìn)實(shí)現(xiàn)小小的目標(biāo),通過條件遷移法化解多分支IF語句這個(gè)教學(xué)難點(diǎn)。條件的遷移,就是用一個(gè)接一個(gè)的問題,牽著學(xué)生的思維,讓他們不停的跟著教學(xué)內(nèi)容思考并實(shí)踐,而不是一味的坐著被“灌”。

四、課堂教學(xué)評(píng)價(jià)

課堂教學(xué)評(píng)價(jià)是促進(jìn)學(xué)生成長(zhǎng)、教師專業(yè)發(fā)展和提高課堂教學(xué)質(zhì)量的重要手段。在VB選擇結(jié)構(gòu)程序設(shè)計(jì)的實(shí)際教學(xué)中采取多向立體式評(píng)價(jià)方式:教師對(duì)學(xué)生的學(xué)習(xí)效果評(píng)價(jià)、學(xué)生對(duì)教師的教學(xué)滿意度評(píng)價(jià)、學(xué)生的自我評(píng)價(jià),這些評(píng)價(jià)貫穿于整個(gè)教學(xué)活動(dòng)中。通過教師對(duì)學(xué)生的學(xué)習(xí)效果評(píng)價(jià),及時(shí)反饋學(xué)生對(duì)重、難點(diǎn)的掌握情況,幫助學(xué)生正確認(rèn)識(shí)自我,樹立不斷進(jìn)取的信心。通過學(xué)生對(duì)教師教學(xué)滿意度的評(píng)價(jià),幫助教師了解自己的課堂教學(xué)水平以及不足之處,為優(yōu)化教學(xué)過程提供科學(xué)依據(jù),有利于教師提高課堂教學(xué)質(zhì)量。通過學(xué)生自我評(píng)價(jià)對(duì)VB選擇結(jié)構(gòu)IF語句的知識(shí)點(diǎn)進(jìn)行回顧與梳理,將感性知識(shí)理性化,并進(jìn)行學(xué)習(xí)方法的總結(jié)與交流等。

五、結(jié)束語

基于中職學(xué)生的學(xué)習(xí)特點(diǎn),我們計(jì)算機(jī)教師需要用心設(shè)計(jì)課堂,在教學(xué)中努力給學(xué)生提供生活化的問題解決環(huán)境,讓學(xué)生帶著疑問主動(dòng)學(xué)習(xí)。采用適合學(xué)生認(rèn)知規(guī)律和發(fā)展規(guī)律的教學(xué)方法突破重點(diǎn)、化解難點(diǎn)。教學(xué)中進(jìn)行有效的課堂教學(xué)評(píng)價(jià),從而切實(shí)有效地提高VB選擇結(jié)構(gòu)程序設(shè)計(jì)的課堂教學(xué)質(zhì)量。

參考文獻(xiàn):

第2篇

關(guān)鍵詞:程序設(shè)計(jì)基礎(chǔ);數(shù)據(jù)結(jié)構(gòu);計(jì)算思維;教學(xué)銜接

0、引言

程序設(shè)計(jì)基礎(chǔ)與數(shù)據(jù)結(jié)構(gòu)是計(jì)算機(jī)類專業(yè)的兩門專業(yè)基礎(chǔ)課,在計(jì)算機(jī)類專業(yè)教學(xué)中具有舉足輕重的作用,都旨在培養(yǎng)學(xué)生的編程能力和計(jì)算思維能力,并為后續(xù)課程打下堅(jiān)實(shí)的專業(yè)基礎(chǔ),但在這兩門課程的教學(xué)過程中,存在一系列問題,嚴(yán)重影響課程的教學(xué)效果。筆者分析和研究產(chǎn)生這些實(shí)際問題的原因,對(duì)這兩門課程的知識(shí)融合、內(nèi)容銜接以及教學(xué)實(shí)踐等進(jìn)行探討,提出切實(shí)可行的解決方案,更好地實(shí)現(xiàn)兩門課程的教學(xué)目標(biāo)。

1、課程教學(xué)內(nèi)容和教學(xué)目標(biāo)

程序設(shè)計(jì)基礎(chǔ)課程是學(xué)生接觸的第一門專業(yè)基礎(chǔ)課,也是進(jìn)行計(jì)算機(jī)編程的入門課程。課程的教學(xué)目標(biāo)是使學(xué)生掌握程序設(shè)計(jì)的基本方法,培養(yǎng)其擁有良好的程序設(shè)計(jì)風(fēng)格、較強(qiáng)的軟件開發(fā)能力以及一定的計(jì)算思維能力,為后續(xù)課程打下良好的基礎(chǔ)。

數(shù)據(jù)結(jié)構(gòu)是繼程序設(shè)計(jì)基礎(chǔ)課程之后的一門綜合專業(yè)基礎(chǔ)課,是計(jì)算機(jī)類專業(yè)的核心課程之一,具有舉足輕重的作用。它是程序設(shè)計(jì)基礎(chǔ)課程所講知識(shí)的自然延伸和具體應(yīng)用。對(duì)數(shù)據(jù)結(jié)構(gòu)的理解、掌握和應(yīng)用拓展,將對(duì)學(xué)生解決具體實(shí)際問題時(shí)的數(shù)據(jù)分析、數(shù)據(jù)組織、數(shù)據(jù)處理和編程能力有著深遠(yuǎn)的影響。課程的教學(xué)目標(biāo)是培養(yǎng)學(xué)生縝密的邏輯思維和數(shù)據(jù)抽象能力以及學(xué)生在軟件設(shè)計(jì)領(lǐng)域中科學(xué)的計(jì)算思維能力,幫助學(xué)生將數(shù)據(jù)結(jié)構(gòu)和算法與具體的編程實(shí)現(xiàn)相結(jié)合并靈活地應(yīng)用到實(shí)踐和工程實(shí)際中。

2、兩門課程間的關(guān)系

從程序與數(shù)據(jù)結(jié)構(gòu)本身的關(guān)系來說,一個(gè)好的程序離不開合適的數(shù)據(jù)結(jié)構(gòu),而數(shù)據(jù)結(jié)構(gòu)中算法的實(shí)現(xiàn)離不開具體的程序設(shè)計(jì)。在計(jì)算機(jī)類專業(yè)的課程體系中,數(shù)據(jù)結(jié)構(gòu)和程序設(shè)計(jì)基礎(chǔ)課程雖然獨(dú)立開設(shè),但是它們之間的聯(lián)系是緊密的。在課程設(shè)置上,程序設(shè)計(jì)基礎(chǔ)是數(shù)據(jù)結(jié)構(gòu)的前導(dǎo)課程,兩門課程一脈相承,不可分割。

學(xué)生對(duì)程序設(shè)計(jì)基礎(chǔ)課程的掌握程度、具備的計(jì)算思維和編程能力,直接關(guān)系到以程序設(shè)計(jì)語言實(shí)現(xiàn)算法的數(shù)據(jù)結(jié)構(gòu)課程的教學(xué)效果。數(shù)據(jù)結(jié)構(gòu)課程通過創(chuàng)造性思維的訓(xùn)練,重點(diǎn)突出數(shù)據(jù)抽象與程序抽象能力的培養(yǎng),從而進(jìn)一步提升學(xué)生的計(jì)算思維能力和編程能力,但兩門課程在實(shí)際教學(xué)中存在一些問題,主要原因是課程設(shè)置、教學(xué)內(nèi)容、教學(xué)方法和教學(xué)實(shí)踐方式等多方面存在缺陷。經(jīng)分析,對(duì)程序設(shè)計(jì)基礎(chǔ)和數(shù)據(jù)結(jié)構(gòu)課程進(jìn)行知識(shí)整合和內(nèi)容銜接,采用適當(dāng)?shù)慕虒W(xué)方式,改進(jìn)教學(xué)實(shí)踐是探討和研究的主要內(nèi)容。

3、兩門課程在實(shí)際教學(xué)中存在的銜接問題

3.1 兩門課程教學(xué)內(nèi)容的脫離

目前,在實(shí)際教學(xué)中,程序設(shè)計(jì)基礎(chǔ)和數(shù)據(jù)結(jié)構(gòu)課程雖然關(guān)系緊密,但是一直被設(shè)定為兩門完全獨(dú)立的課程,而且教師在制訂教學(xué)大綱和教學(xué)目標(biāo)時(shí)容易忽視兩門課程問的聯(lián)系,在教學(xué)過程中出現(xiàn)一些盲區(qū),要么兩門課程在教學(xué)內(nèi)容上出現(xiàn)不同程度的交叉,要么出現(xiàn)知識(shí)銜接的斷層,令學(xué)生對(duì)兩門課程的內(nèi)在聯(lián)系沒有整體概念和認(rèn)識(shí),從而導(dǎo)致不能深入系統(tǒng)地學(xué)習(xí)相關(guān)知識(shí)。尤其是先行課程序設(shè)計(jì)基礎(chǔ)的教學(xué)內(nèi)容和課程案例完全脫離了數(shù)據(jù)結(jié)構(gòu)課程,使數(shù)據(jù)結(jié)構(gòu)中最頻繁使用的知識(shí)和內(nèi)容在程序設(shè)計(jì)基礎(chǔ)課程中甚少提及,不能為數(shù)據(jù)結(jié)構(gòu)課程的講解打下扎實(shí)的程序設(shè)計(jì)基礎(chǔ)。

3.2 程序設(shè)計(jì)編程語言與數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)語言不一致

程序設(shè)計(jì)基礎(chǔ)課程所教授的編程語言與數(shù)據(jù)結(jié)構(gòu)教材或?qū)嶒?yàn)所使用的實(shí)現(xiàn)語言不一致,如將C++語言作為程序設(shè)計(jì)基礎(chǔ)的教授語言,而在數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)上選擇c語言或Java語言,以至于數(shù)據(jù)結(jié)構(gòu)的理論教學(xué)與具體上機(jī)編程實(shí)現(xiàn)脫節(jié),嚴(yán)重影響了上機(jī)實(shí)驗(yàn)和課程設(shè)計(jì)環(huán)節(jié)。

3.3 程序設(shè)計(jì)方法與數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)方法不一致

程序設(shè)計(jì)基礎(chǔ)課程中或注重面向過程的程序設(shè)計(jì)方法,或注重面向?qū)ο蟮某绦蛟O(shè)計(jì)方法,但在數(shù)據(jù)結(jié)構(gòu)課程中卻很難利用前導(dǎo)課程中學(xué)到的程序設(shè)計(jì)方法實(shí)現(xiàn)相關(guān)的數(shù)據(jù)結(jié)構(gòu)和算法,從而影響了學(xué)生對(duì)數(shù)據(jù)結(jié)構(gòu)課程知識(shí)的應(yīng)用與實(shí)現(xiàn)。另一方面,學(xué)生在學(xué)習(xí)過程中沒有充分理解數(shù)據(jù)結(jié)構(gòu)課程的作用和實(shí)際意義,以至于在實(shí)際項(xiàng)目和問題中不知使用什么方法(面向過程或面向?qū)ο螅┓治鼋鉀Q問題,不知如何運(yùn)用數(shù)據(jù)結(jié)構(gòu)知識(shí)解決實(shí)際問題。

3.4 前導(dǎo)課程對(duì)后續(xù)課程實(shí)踐環(huán)節(jié)的影響

數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)環(huán)節(jié)相對(duì)課堂理論環(huán)節(jié)較薄弱。此問題的存在多半是因?yàn)閿?shù)據(jù)結(jié)構(gòu)具體實(shí)現(xiàn)的關(guān)鍵技術(shù)在程序設(shè)計(jì)基礎(chǔ)課中未被講解或強(qiáng)調(diào),在進(jìn)行數(shù)據(jù)結(jié)構(gòu)算法從理論到偽代碼、再由偽代碼到真代碼轉(zhuǎn)換的過程中難以真正編程實(shí)現(xiàn),使學(xué)生對(duì)數(shù)據(jù)結(jié)構(gòu)的理解和掌握僅停留在抽象層、概念層、理論層,難以上升到實(shí)現(xiàn)層,從而影響學(xué)生的學(xué)習(xí)興趣和積極性。同時(shí),課程中的實(shí)踐項(xiàng)目過于單一且相對(duì)獨(dú)立,使實(shí)踐環(huán)節(jié)與實(shí)際項(xiàng)目的聯(lián)系過于松散,學(xué)生運(yùn)用所學(xué)知識(shí)解決實(shí)際問題的能力和實(shí)際工程能力很難得以鍛煉。

3.5 缺少計(jì)算思維能力的培養(yǎng),缺乏理論知識(shí)與實(shí)際應(yīng)用的聯(lián)系

提高學(xué)生計(jì)算思維能力是程序設(shè)計(jì)基礎(chǔ)和數(shù)據(jù)結(jié)構(gòu)課程共同的目標(biāo)。計(jì)算思維是抽象的多個(gè)層次上的思維,而抽象是表達(dá)實(shí)際的方法。然而,現(xiàn)行教學(xué)方法過多關(guān)注程序設(shè)計(jì)和數(shù)據(jù)結(jié)構(gòu)知識(shí)點(diǎn)的講解,缺乏對(duì)學(xué)生思維能力的培養(yǎng)。

如果缺乏理論聯(lián)系實(shí)際,那么將影響學(xué)生計(jì)算思維的培養(yǎng)。數(shù)據(jù)結(jié)構(gòu)中的知識(shí)又太抽象,如果缺乏相應(yīng)的實(shí)際案例對(duì)抽象知識(shí)加以應(yīng)用,那么就會(huì)導(dǎo)致學(xué)生不知道怎樣將所學(xué)的知識(shí)應(yīng)用到實(shí)際中,缺乏具體問題具體分析和解決的能力。

3.6 教師本身知識(shí)結(jié)構(gòu)欠缺,上機(jī)實(shí)踐指導(dǎo)教師數(shù)量不足

授課教師知識(shí)結(jié)構(gòu)的缺乏將導(dǎo)致一些現(xiàn)實(shí)問題:如果程序設(shè)計(jì)基礎(chǔ)的教師不懂?dāng)?shù)據(jù)結(jié)構(gòu),那么其自然不會(huì)將相關(guān)知識(shí)引入課堂,同時(shí)也缺乏用所教授的語言具體實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)中結(jié)構(gòu)和算法的能力;如果數(shù)據(jù)結(jié)構(gòu)的教師缺乏相關(guān)編程語言知識(shí),那么就會(huì)給上機(jī)輔導(dǎo)帶來困難。同時(shí),兩門課程具有很強(qiáng)的實(shí)踐性,若上機(jī)實(shí)踐輔導(dǎo)教師不足,將不利于學(xué)生編程能力的提升以及相關(guān)軟件大賽學(xué)生的培養(yǎng)和輔導(dǎo)。

針對(duì)以上實(shí)際教學(xué)中存在的問題,可知為提高程序設(shè)計(jì)基礎(chǔ)與數(shù)據(jù)結(jié)構(gòu)課程的教學(xué)效果,根據(jù)計(jì)算機(jī)類專業(yè)這兩門課程教學(xué)內(nèi)容和目標(biāo),對(duì)兩門課程進(jìn)行知識(shí)整合和內(nèi)容銜接的必要性,對(duì)課程銜接的方法和思路等進(jìn)行探討勢(shì)在必行。同時(shí),課程教學(xué)不僅要關(guān)注知識(shí)的傳授,還要培養(yǎng)學(xué)生主動(dòng)獲取知識(shí)并綜合已有知識(shí)創(chuàng)造新知識(shí)的能力。

4、程序設(shè)計(jì)基礎(chǔ)和數(shù)據(jù)結(jié)構(gòu)課程銜接的新方法和思路

4.1 做好兩門課程教學(xué)內(nèi)容的融合和銜接

教師需緊密結(jié)合計(jì)算機(jī)類專業(yè)的培養(yǎng)目標(biāo),精心設(shè)計(jì)程序設(shè)計(jì)基礎(chǔ)和數(shù)據(jù)結(jié)構(gòu)課程的教學(xué)內(nèi)容,既要滿足課程的專業(yè)基礎(chǔ)性,又要滿足后續(xù)課程學(xué)習(xí)的需要,嚴(yán)密制訂教學(xué)大綱,做好程序設(shè)計(jì)基礎(chǔ)與數(shù)據(jù)結(jié)構(gòu)教學(xué)內(nèi)容的銜接以及相關(guān)教材的選定。

在程序設(shè)計(jì)基礎(chǔ)課程教學(xué)中,教師需要關(guān)注學(xué)生計(jì)算思維能力的培養(yǎng),將重點(diǎn)放在講解思路上,教學(xué)生如何對(duì)問題進(jìn)行抽象,還要介紹一些簡(jiǎn)單的基礎(chǔ)算法和數(shù)據(jù)結(jié)構(gòu)。程序設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)的聯(lián)系過程必須做到循序漸進(jìn),若引入的數(shù)據(jù)結(jié)構(gòu)相關(guān)知識(shí)過難,會(huì)打擊學(xué)生的學(xué)習(xí)積極性。例如,教師講數(shù)組時(shí)可引入幾種數(shù)據(jù)結(jié)構(gòu)中簡(jiǎn)單的排序算法冒泡排序、選擇排序等;講完指針和結(jié)構(gòu)體后可引入最基本的數(shù)據(jù)結(jié)構(gòu)――鏈表;講完嵌套函數(shù)調(diào)用后可引入“遞歸”,它是數(shù)據(jù)結(jié)構(gòu)中解決問題的常見思想和算法,可以通過簡(jiǎn)單的遞歸函數(shù)幫助學(xué)生理解遞歸思想和遞歸調(diào)用過程,這些是理解數(shù)據(jù)結(jié)構(gòu)中復(fù)雜遞歸函數(shù)的基礎(chǔ)。在程序設(shè)計(jì)基礎(chǔ)教學(xué)中,只講遞歸函數(shù)的簡(jiǎn)單應(yīng)用,而在數(shù)據(jù)結(jié)構(gòu)教學(xué)中,需要介紹遞歸函數(shù)的復(fù)雜應(yīng)用:棧、樹、八皇后問題、N個(gè)數(shù)的全排列等。圍繞“遞歸”這一重要知識(shí)點(diǎn),從易到難并結(jié)合課程本身特點(diǎn)進(jìn)行理論分析,將有益于整合課程教學(xué)內(nèi)容,引導(dǎo)學(xué)生循序漸進(jìn)地學(xué)習(xí)和思考。

針對(duì)在程序設(shè)計(jì)基礎(chǔ)課程中不重要但在數(shù)據(jù)結(jié)構(gòu)及算法中被廣泛使用的知識(shí)點(diǎn),教師需要在講解程序設(shè)計(jì)課程時(shí)將其點(diǎn)出并告訴學(xué)生此知識(shí)在后續(xù)數(shù)據(jù)結(jié)構(gòu)課中的重要性,引起學(xué)生對(duì)該知識(shí)點(diǎn)的興趣和重視,如指針的靈活使用、結(jié)構(gòu)體類型的復(fù)雜應(yīng)用、類型重命名、類的拷貝構(gòu)造函數(shù)(深拷貝)、函數(shù)模板、類模版等。

同時(shí),教師要對(duì)程序設(shè)計(jì)基礎(chǔ)課程內(nèi)容進(jìn)行適當(dāng)補(bǔ)充和擴(kuò)充,如增加c++函數(shù)模板、類模板的相關(guān)知識(shí),為將泛型程序設(shè)計(jì)、c++的STL引人數(shù)據(jù)結(jié)構(gòu)課程奠定知識(shí)基礎(chǔ),縮小教學(xué)知識(shí)與實(shí)際運(yùn)用的距離,提高學(xué)生的動(dòng)手編程能力和知識(shí)運(yùn)用能力。

4.2 保證程序設(shè)計(jì)編程語言與數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)語言的一致

程序設(shè)計(jì)基礎(chǔ)課程所教授的編程語言要與數(shù)據(jù)結(jié)構(gòu)教材或?qū)嶒?yàn)所使用的編程語言一致,這樣不僅能大大提高學(xué)生的編程能力,還有利于數(shù)據(jù)結(jié)構(gòu)課程的上機(jī)實(shí)現(xiàn)。

4.3 將面向?qū)ο笏枷胍氤绦蛟O(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)中

隨著程序設(shè)計(jì)方法從傳統(tǒng)的結(jié)構(gòu)化程序設(shè)計(jì)演化到面向?qū)ο蟪绦蛟O(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)在面向?qū)ο蟪绦蛟O(shè)計(jì)中也將成為面向?qū)ο蟮臄?shù)據(jù)結(jié)構(gòu),且將隨著程序設(shè)計(jì)理論和技術(shù)的發(fā)展而不斷變化發(fā)展。在程序設(shè)計(jì)基礎(chǔ)課程中講授面向?qū)ο蟮木幊陶Z言如c++語言,既可以實(shí)現(xiàn)面向過程的數(shù)據(jù)結(jié)構(gòu),又能實(shí)現(xiàn)面向?qū)ο蟮臄?shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)結(jié)構(gòu)課程采用面向?qū)ο蟮挠^點(diǎn)講授并以C++語言作為算法的描述工具,從而強(qiáng)化數(shù)據(jù)結(jié)構(gòu)基本知識(shí)和面向?qū)ο蟾呒?jí)程序設(shè)計(jì)基本能力的雙基訓(xùn)練以及實(shí)際動(dòng)手能力培養(yǎng)。在設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)實(shí)踐項(xiàng)目時(shí),將面向?qū)ο蟮某绦蛟O(shè)計(jì)思想、面向?qū)ο蟮某绦蛟O(shè)計(jì)語言和數(shù)據(jù)結(jié)構(gòu)課程教學(xué)內(nèi)容恰當(dāng)?shù)厝诤?,有效整合兩門課程中的重疊部分,突出各自的側(cè)重點(diǎn),符合當(dāng)前軟件設(shè)計(jì)思想和軟件開發(fā)趨勢(shì)。

4.4 加強(qiáng)課程中計(jì)算思維能力的培養(yǎng)

在程序設(shè)計(jì)和數(shù)據(jù)結(jié)構(gòu)的教學(xué)方法上,將面向語法為中心的教學(xué)逐漸轉(zhuǎn)變?yōu)槊嫦騿栴}求解的教學(xué),從問題出發(fā)采用適當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu),將其抽象成解決問題的算法描述,用程序設(shè)計(jì)語言實(shí)現(xiàn)問題求解,使課程從過去的僅講授孤立的知識(shí)點(diǎn),轉(zhuǎn)變?yōu)橹v授計(jì)算思維和問題求解的過程,從而達(dá)到突出思維方法訓(xùn)練的目的。在程序設(shè)計(jì)基礎(chǔ)和數(shù)據(jù)結(jié)構(gòu)授課時(shí)盡量將理論聯(lián)系實(shí)際,將知識(shí)點(diǎn)解釋和應(yīng)用為身邊容易理解的真實(shí)案例。例如,講“圖”時(shí),可以把現(xiàn)在流行的復(fù)雜網(wǎng)絡(luò)、社交網(wǎng)絡(luò)引入其中;講解“隊(duì)列”時(shí),可將春節(jié)買票引入其中,讓學(xué)生從身邊的例子理解理論知識(shí)的具體應(yīng)用。對(duì)有些案例可以提倡“一題多解”,不局限于一種數(shù)據(jù)結(jié)構(gòu)、解題思路和實(shí)現(xiàn)方法,通過一題多問、一題多解帶動(dòng)學(xué)生探索、比較、尋求更好的解決途徑,達(dá)到學(xué)生分析解決問題能力的提高和計(jì)算思維能力的培養(yǎng)。

4.5 提升教師能力,配備充足的上機(jī)輔導(dǎo)教師

學(xué)校要加強(qiáng)程序設(shè)計(jì)基礎(chǔ)與數(shù)據(jù)結(jié)構(gòu)課程相關(guān)授課教師整體能力的提升。教師不僅要掌握自己所教授課程的知識(shí),還要對(duì)該課程的前續(xù)及后續(xù)課程內(nèi)容有所了解,便于維護(hù)教學(xué)的整體秩序和融合學(xué)生的知識(shí)體系。同時(shí),教師要積極參與各種軟件大賽和企業(yè)培訓(xùn),將教授的理論知識(shí)和實(shí)際項(xiàng)目相結(jié)合,達(dá)到應(yīng)用知識(shí)解決復(fù)雜問題的目的。此外,兩門課程的上機(jī)實(shí)踐環(huán)節(jié)要配備足量的輔導(dǎo)教師,不讓學(xué)生輸在編程入門的起跑線上。

4.6 依托程序設(shè)計(jì)競(jìng)賽,提高學(xué)生的編程能力

依托全國(guó)軟件大賽、ACM大賽等程序設(shè)計(jì)競(jìng)賽,將競(jìng)賽題目引入程序設(shè)計(jì)基礎(chǔ)和數(shù)據(jù)結(jié)構(gòu)課堂中。此類題目強(qiáng)調(diào)考查學(xué)生對(duì)各種算法的應(yīng)用能力,綜合性較強(qiáng),非常適合輔助學(xué)生學(xué)習(xí)和體會(huì)數(shù)據(jù)結(jié)構(gòu)的妙用,提升學(xué)生分析和解決實(shí)際問題的能力,引導(dǎo)學(xué)生將所學(xué)知識(shí)準(zhǔn)確而靈活地運(yùn)用到實(shí)際生活中,大大提高學(xué)生的實(shí)踐動(dòng)手和程序設(shè)計(jì)能力,促進(jìn)其知識(shí)的融會(huì)貫通。另外,通過競(jìng)賽等多種活動(dòng)可以為學(xué)生提供展現(xiàn)程序設(shè)計(jì)能力的舞臺(tái),激發(fā)學(xué)生學(xué)習(xí)的主動(dòng)性,培養(yǎng)其計(jì)算思維能力。

例如,在教授程序設(shè)計(jì)基礎(chǔ)時(shí),講完邏輯表達(dá)式和多重循環(huán)結(jié)構(gòu)后,可以將大賽中的邏輯推理題目引入教學(xué)中并引出常見的解題方法和思路一枚舉法,從而加深對(duì)枚舉法的認(rèn)識(shí)。通過采用數(shù)據(jù)結(jié)構(gòu)中的雙向鏈表和線性數(shù)組兩種方式實(shí)現(xiàn)大賽中常見的約瑟夫環(huán)問題。

4.7 引入OJ平臺(tái)。加強(qiáng)課程實(shí)踐環(huán)節(jié)

引人在線判題(Online Judge,oJ)系統(tǒng),提高學(xué)生的實(shí)踐能力。能力需要以豐富的知識(shí)作為支撐,而實(shí)踐是能力賴以生長(zhǎng)的土壤。在OJ系統(tǒng)中,學(xué)生可以在線提交程序源代碼,系統(tǒng)對(duì)源代碼進(jìn)行編譯和執(zhí)行并通過預(yù)先設(shè)計(jì)的測(cè)試數(shù)據(jù)檢驗(yàn)程序源代碼的正確性。引入0J系統(tǒng)不僅可以輔助教師批改作業(yè),減輕教師工作壓力,還可以促使學(xué)生加強(qiáng)平時(shí)上機(jī)編程練習(xí),通過編程排名方式提高學(xué)生的學(xué)習(xí)興趣。OJ系統(tǒng)中擁有大量題庫,可以讓學(xué)生進(jìn)行上機(jī)實(shí)踐,培養(yǎng)自身的計(jì)算思維能力,提高編程能力。0J系統(tǒng)不僅可以作為程序設(shè)計(jì)基礎(chǔ)課程的實(shí)踐平臺(tái),還可作為數(shù)據(jù)結(jié)構(gòu)課程的實(shí)踐平臺(tái)。

第3篇

1.在《C程序設(shè)計(jì)》與《數(shù)據(jù)結(jié)構(gòu)》教學(xué)中對(duì)課程整合概念的理解

理論上,課程整合是指對(duì)課程設(shè)置、各課程教育教學(xué)目標(biāo)、教學(xué)設(shè)計(jì)、評(píng)價(jià)等諸要素作系統(tǒng)的考察與操作。在實(shí)際教學(xué)中,課程整合是指考慮到各門相互分裂的課程之間的有機(jī)聯(lián)系,將這些課程綜合化。

在傳統(tǒng)的教學(xué)模式中,《C程序設(shè)計(jì)》是先行課程,《數(shù)據(jù)結(jié)構(gòu)》是后續(xù)課程,它們都是學(xué)習(xí)操作系統(tǒng)、數(shù)據(jù)庫原理和應(yīng)用、面向?qū)ο蟪绦蛟O(shè)計(jì)等課程的基礎(chǔ)。《C語言程序設(shè)計(jì)》是學(xué)生最先接觸的結(jié)構(gòu)化程序設(shè)計(jì)語言,其教學(xué)目的主要是使學(xué)生了解結(jié)構(gòu)化程序設(shè)計(jì)的算法和思路,掌握程序設(shè)計(jì)和調(diào)試的基本技巧,培養(yǎng)良好的軟件設(shè)計(jì)基礎(chǔ)?!稊?shù)據(jù)結(jié)構(gòu)》主要是研究非數(shù)值應(yīng)用問題中數(shù)據(jù)之間的邏輯關(guān)系和對(duì)數(shù)據(jù)的操作,同時(shí)還研究如何將具有邏輯關(guān)系的數(shù)據(jù)按一定的存儲(chǔ)方式存放在計(jì)算機(jī)內(nèi)。其教學(xué)目的主要是使學(xué)生掌握數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu)及其相應(yīng)的算法,培養(yǎng)學(xué)生解決實(shí)際問題的能力,即能夠把現(xiàn)實(shí)世界中的客觀問題,變換為在計(jì)算機(jī)內(nèi)的表示形式,學(xué)會(huì)組織數(shù)據(jù)、選擇算法、養(yǎng)成良好的程序設(shè)計(jì)風(fēng)格。

《數(shù)據(jù)結(jié)構(gòu)》課程中分析數(shù)據(jù)之間的邏輯關(guān)系和確定數(shù)據(jù)在計(jì)算機(jī)內(nèi)的存儲(chǔ)結(jié)構(gòu)是所有程序設(shè)計(jì)過程中必須完成的兩大任務(wù),且《數(shù)據(jù)結(jié)構(gòu)》中算法描述的語言又多采用C語言,兩門課程之間存在著緊密而內(nèi)在聯(lián)系,為兩門課程的整合提供了可能性。

2.《C程序設(shè)計(jì)》與《數(shù)據(jù)結(jié)構(gòu)》的教學(xué)現(xiàn)狀

在傳統(tǒng)的教學(xué)模式中,《C程序設(shè)計(jì)》是先行課程,《數(shù)據(jù)結(jié)構(gòu)》是后續(xù)課程,將兩門課程分開來教學(xué),人為地割斷了它們之間的內(nèi)在聯(lián)系,導(dǎo)致學(xué)生在學(xué)習(xí)《C程序設(shè)計(jì)》時(shí),僅局限于C語言的語法層面上,不能把C語言的程序設(shè)計(jì)思路和語法知識(shí)具體運(yùn)用到數(shù)據(jù)結(jié)構(gòu)的算法中去,使理論知識(shí)與實(shí)踐運(yùn)用脫鉤。而在學(xué)習(xí)《數(shù)據(jù)結(jié)構(gòu)》時(shí),由于教師的更換和教材的多樣化,任課教師又不得不花掉一、兩周的時(shí)間來復(fù)習(xí)C語言的相關(guān)知識(shí),造成了課時(shí)的浪費(fèi)和學(xué)生反感。在具體運(yùn)用時(shí),又出現(xiàn)學(xué)生能理解數(shù)據(jù)結(jié)構(gòu)中的算法和讀懂算法,卻不能運(yùn)用C語言去實(shí)現(xiàn)算法等程序設(shè)計(jì)能力較差的現(xiàn)象。筆者長(zhǎng)期從事這兩門課程的教學(xué)工作,一直在探索如何提高這兩門課程的教學(xué)效果,培養(yǎng)學(xué)生運(yùn)用C語言這個(gè)工具去解決實(shí)際問題的能力。

3.《C程序設(shè)計(jì)》與《數(shù)據(jù)結(jié)構(gòu)》課程整合的思路

在高職院校計(jì)算機(jī)應(yīng)用專業(yè)的課程體系中,實(shí)現(xiàn)《C程序設(shè)計(jì)》和《數(shù)據(jù)結(jié)構(gòu)》這兩門課程的整合,要結(jié)合職業(yè)教育培養(yǎng)實(shí)用型人才的目標(biāo),根據(jù)后續(xù)專業(yè)課程的需要來確定?!禖程序設(shè)計(jì)》和《數(shù)據(jù)結(jié)構(gòu)》課程整合化的思路以C語言為工具,以實(shí)踐為中心,重視基礎(chǔ)知識(shí),注重能力培養(yǎng),對(duì)兩門課程教學(xué)內(nèi)容和教學(xué)模式進(jìn)行優(yōu)化和整合。

在實(shí)施過程中,將這兩門課程整合為一門課程,課程名稱為《C程序設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)》,在一個(gè)學(xué)期內(nèi)完成授課內(nèi)容。堅(jiān)持理論聯(lián)系實(shí)踐的教學(xué)模式,突出實(shí)踐教學(xué)的重要性,去掉繁瑣的理論推導(dǎo),重新設(shè)計(jì)教學(xué)、實(shí)訓(xùn)大綱,處理教材,合理分配學(xué)時(shí)。在具體教學(xué)中,以C語言為主線,將數(shù)據(jù)結(jié)構(gòu)的內(nèi)容溶入到C語言的教學(xué)中,對(duì)數(shù)據(jù)結(jié)構(gòu)的內(nèi)容以“適度夠用”為原則,適當(dāng)?shù)剡M(jìn)行刪減,以滿足高職教育培養(yǎng)應(yīng)用型人才的教學(xué)需要。

4.《C程序設(shè)計(jì)》與《數(shù)據(jù)結(jié)構(gòu)》課程整合的具體實(shí)施

(1)整合后理論課教學(xué)的內(nèi)容和學(xué)時(shí)分配

整合后周學(xué)時(shí)為6節(jié),總學(xué)時(shí)為102節(jié)(按17個(gè)教學(xué)周計(jì)),其中理論課時(shí)為68節(jié),上機(jī)實(shí)踐課時(shí)為34節(jié)。

(2)課程整合后的實(shí)踐教學(xué)設(shè)計(jì)

在實(shí)踐教學(xué)中,要進(jìn)一步鞏固對(duì)理論知識(shí)的理解,提高學(xué)生靈活運(yùn)用數(shù)據(jù)結(jié)構(gòu)和算法的能力,使學(xué)生在編程、上機(jī)操作、程序調(diào)試與正確性驗(yàn)證等基本技能方面得到訓(xùn)練和提高。實(shí)驗(yàn)可分兩部分,一是驗(yàn)證性實(shí)驗(yàn),主要結(jié)合課堂理論教學(xué)內(nèi)容展開,學(xué)生可以對(duì)在課堂上學(xué)到的基本算法進(jìn)行驗(yàn)證;二是運(yùn)用性實(shí)驗(yàn),組織學(xué)生以小組為單位設(shè)計(jì)一些實(shí)用程序,要求學(xué)生從實(shí)際出發(fā),在具體、真實(shí)的環(huán)境中分析研究數(shù)據(jù)對(duì)象的特性,構(gòu)造合理的數(shù)據(jù)結(jié)構(gòu)以及相應(yīng)的算法。

(3)課程整合后的考試要求

整合后的課程培養(yǎng)目標(biāo)是提高學(xué)生的計(jì)算機(jī)應(yīng)用能力,計(jì)算機(jī)應(yīng)用能力包括了三個(gè)層次:操作使用能力、應(yīng)用開發(fā)能力和創(chuàng)新能力。因此整合后的課程考核,應(yīng)采取理論基礎(chǔ)閉卷和上機(jī)操作開卷相結(jié)合的方式進(jìn)行,綜合評(píng)價(jià)應(yīng)從以下三個(gè)方面來著手。

①筆試。筆試主要是考察學(xué)生對(duì)理論知識(shí)的系統(tǒng)性的理解,可由客觀題型(如選擇、填空題等)和主觀題型組成,客觀題型要立足于基礎(chǔ)知識(shí),小而全,避免死記硬背。主觀題型要靈活多樣,如問題解決分析、程序編寫等。占整個(gè)評(píng)價(jià)的30%。

②上機(jī)實(shí)踐。上機(jī)實(shí)踐貫穿于整個(gè)教學(xué)當(dāng)中,所以要注重過程考核,結(jié)合實(shí)訓(xùn)計(jì)劃,在各單元模塊結(jié)束時(shí),進(jìn)行隨堂考核,并認(rèn)真檢查和記錄學(xué)生考核情況,作為期末上機(jī)實(shí)踐成績(jī)的一部分。實(shí)行各單元過關(guān),有了各單元模塊的考核,到期末上機(jī)操作綜合考核時(shí)就不成問題了。通過對(duì)上機(jī)操作實(shí)踐的評(píng)價(jià),可以考察學(xué)生應(yīng)用計(jì)算機(jī)解決實(shí)際問題的能力。占整個(gè)評(píng)價(jià)的40%。

③學(xué)生的平時(shí)表現(xiàn)。學(xué)生的平時(shí)表現(xiàn)是指是否認(rèn)真上課、聽課,上機(jī)練習(xí)的任務(wù)是否獨(dú)立完成,上機(jī)設(shè)計(jì)的任務(wù)是否有創(chuàng)意,作業(yè)是否按時(shí)上交等等,這些資料的積累,有利于對(duì)學(xué)生學(xué)習(xí)情況的全面認(rèn)識(shí)。學(xué)生在整個(gè)授課過程中的表現(xiàn),占整個(gè)評(píng)價(jià)的30%。

在課程整合中,合理的考核方案能促進(jìn)學(xué)生知識(shí)的積累,避免學(xué)生考前突擊和死記硬背現(xiàn)象,使學(xué)生真正學(xué)到知識(shí)。

第4篇

關(guān)鍵詞:目錄式菜單;C51;結(jié)構(gòu)體;函數(shù)指針

中圖分類號(hào):TP368.12

隨著礦用產(chǎn)品智能化越來越高,人機(jī)界面越來越豐富,而在目前礦用產(chǎn)品中,人機(jī)界面多基于單片機(jī)及按鍵方式實(shí)現(xiàn),對(duì)于復(fù)雜的人機(jī)界面程序設(shè)計(jì)工作量很大,且存在經(jīng)常需要修改的問題。因此設(shè)計(jì)了運(yùn)行可靠、修改方便的菜單程序框架可以降低工作量,提高產(chǎn)品開發(fā)效率,且為以后程序設(shè)計(jì)建立模板。多級(jí)菜單程序的設(shè)計(jì)方法很多,最典型的方法是根據(jù)按鍵動(dòng)作及顯示界面建立索引關(guān)系表,具體實(shí)現(xiàn)方法見文獻(xiàn)[1]。該方法基于這個(gè)關(guān)系表,增加或調(diào)整界面時(shí),對(duì)結(jié)構(gòu)表修改較大,特別是在界面很多時(shí)不方便,在修改及通用性方面差。作者通過總結(jié)已往的各種菜單設(shè)計(jì)方法,根據(jù)設(shè)計(jì)菜單經(jīng)驗(yàn),設(shè)計(jì)了一種基于C51結(jié)構(gòu)體的目錄式菜單,通過目錄查詢和函數(shù)指針調(diào)用,實(shí)現(xiàn)菜單各種操作功能。

1 目錄式菜單程序設(shè)計(jì)

通過對(duì)菜單的共性分析,提煉出菜單結(jié)構(gòu)特點(diǎn),形成菜單條結(jié)構(gòu)體。一般每個(gè)菜單項(xiàng)有菜單標(biāo)簽和子菜單列表;可以通過上下選擇鍵對(duì)子菜單項(xiàng)上下選擇;在選擇后進(jìn)行確認(rèn)操作,調(diào)用功能函數(shù)執(zhí)行,且可進(jìn)入下一級(jí)子菜單或進(jìn)入當(dāng)前菜單的參數(shù)修改;在參數(shù)修改時(shí)通過上下選擇鍵修改;取消或返回可通過取消鍵操作。為實(shí)現(xiàn)以上功能首先建立菜單條結(jié)構(gòu)體,并根據(jù)菜單功能項(xiàng)目,分級(jí)建立菜單結(jié)構(gòu)體,確立菜單的顯示內(nèi)容、菜單條之間關(guān)系及執(zhí)行的功能等,然后再設(shè)計(jì)各功能函數(shù)。因此本設(shè)計(jì)的關(guān)鍵是要定義好菜單的目錄結(jié)構(gòu)體以及菜單的操作及顯示函數(shù)。

2 結(jié)構(gòu)體定義

2.1 菜單條結(jié)構(gòu)體定義

菜單條結(jié)構(gòu)體確立本菜單的顯示內(nèi)容、附加數(shù)據(jù)、結(jié)構(gòu)關(guān)系、執(zhí)行功能等屬性,包含內(nèi)容有當(dāng)前菜單條數(shù)、菜單標(biāo)簽、菜單條名稱、菜單條數(shù)據(jù)指針、父菜單指針、子菜單指針、執(zhí)行功能函數(shù)等關(guān)系,結(jié)構(gòu)體如下定義。

struct MenuItem

{ uchar MenuCount; //當(dāng)前菜單條數(shù)

char *MenuCaption; //菜單標(biāo)簽

char *DisplayString; //菜單條名稱

struct MenuData *DisplayData; //菜單條數(shù)據(jù)指針

struct MenuItem *ParentMenus; //父菜單指針

struct MenuItem *ChildrenMenus; //子菜單指針

void (*Subs)(); }; //執(zhí)行功能函數(shù)

2.2 菜單條數(shù)據(jù)結(jié)構(gòu)體定義

為了減少程序量和操作方便,在有些最底層菜單后附帶數(shù)據(jù),而這些數(shù)據(jù)的屬性不同,操作顯示都有區(qū)別,因此根據(jù)他們的共性將數(shù)據(jù)的屬性和操作、顯示等封裝成結(jié)構(gòu)體,包含內(nèi)容有當(dāng)前數(shù)據(jù)個(gè)數(shù)、數(shù)據(jù)名稱、數(shù)據(jù)屬性、修改操作、顯示操作等,結(jié)構(gòu)體如下定義。

struct MenuData

{ uchar Count; //數(shù)據(jù)條數(shù)

char * Name; //數(shù)據(jù)名稱

uchar Attribute; //數(shù)據(jù)屬性,

void (*Set)(); // 設(shè)置函數(shù)

void (*Show)(); }; // 顯示函數(shù)

2.3 菜單目錄結(jié)構(gòu)體定義

在菜單條結(jié)構(gòu)體基礎(chǔ)上,根據(jù)每個(gè)界面菜單的內(nèi)容填寫菜單目錄結(jié)構(gòu)體,再根據(jù)具體功能寫各功能函數(shù)。菜單目錄結(jié)構(gòu)體示例如下。

struct MenuItem code Menu[]=

{ {3,"-菜單-", "1 菜單1", &MenuData1, ParentMenu, Menu1, Subs1},

{3,"-菜單-", "2 菜單2", &MenuData2, ParentMenu, Menu2, Subs2},

{3,"-菜單-", "3 菜單3", &MenuData3, ParentMenu, Menu3, Subs3},};

3 菜單目錄操作函數(shù)設(shè)計(jì)

定義好菜單目錄結(jié)構(gòu)體后,關(guān)鍵還要實(shí)現(xiàn)菜單目錄檢索和顯示,具體由以下兩個(gè)功能函數(shù)實(shí)現(xiàn)。

3.1 菜單目錄檢索函數(shù)設(shè)計(jì)

通過菜單檢索函數(shù)建立按鍵操作和菜單目錄的關(guān)系,可以在菜單目錄中檢索出當(dāng)前需要的菜單及其相關(guān)的功能。void SearchMenu(void)函數(shù)根據(jù)按鍵狀態(tài),實(shí)現(xiàn)菜單上選、下選、返回、執(zhí)行菜單功能函數(shù)等操作功能。

3.2 菜單顯示函數(shù)設(shè)計(jì)

菜單顯示函數(shù)根據(jù)當(dāng)前操作狀態(tài)顯示菜單條及相關(guān)數(shù)據(jù),以及實(shí)現(xiàn)反白顯示等功能。

void ShowMenu(void)函數(shù)實(shí)現(xiàn)菜單標(biāo)簽、子菜單條顯示,并實(shí)現(xiàn)多條子菜單條行循環(huán)顯示操作,對(duì)選中的菜單條反白顯示等。

3.3 菜單函數(shù)設(shè)計(jì)

為了使程序結(jié)構(gòu)一體化,將讀鍵、菜單檢索、菜單顯示等函數(shù)封裝到一起,同時(shí)還具備對(duì)實(shí)時(shí)數(shù)據(jù)刷新、超時(shí)返回默認(rèn)界面等功能。

4 實(shí)例分析

根據(jù)以上的目錄式菜單設(shè)計(jì)方法,以水泵閥門控制箱顯示單元實(shí)例應(yīng)用進(jìn)行分析。其硬件環(huán)境如下,CPU選用C8051F340,采用內(nèi)部12MHz頻率運(yùn)行,使用內(nèi)部4K RAM作為顯存;顯示采用DM160128圖形液晶顯示模塊,不帶字庫,可以顯示16行20列字符或8行10列漢字;輸入采用按鍵和紅外遙控方式,設(shè)置有四個(gè)功能鍵(上選、下選、確認(rèn)、取消/返回)。根據(jù)該項(xiàng)目的需要,顯示主菜單分實(shí)時(shí)數(shù)據(jù)、記錄查詢、參數(shù)設(shè)置、系統(tǒng)設(shè)置、參數(shù)校準(zhǔn)、系統(tǒng)信息等六大項(xiàng),而每項(xiàng)有多級(jí)子項(xiàng),總共所有菜單條近300條。根據(jù)結(jié)構(gòu)體菜單設(shè)計(jì),菜單目錄結(jié)構(gòu)體及數(shù)據(jù)結(jié)構(gòu)體部分示例如下。

4.1 主菜單目錄

struct MenuItem code MainMenu[]=

{ {6,"-主菜單-", "1 實(shí)時(shí)數(shù)據(jù)", &NullData, RootMenu, ViewMenu, NullSubs},

{0,&Null, "2 記錄查詢", &NullData, RootMenu, FindMenu, NullSubs},

{0,&Null, "3 參數(shù)設(shè)置", &NullData, RootMenu, SetupMenu, NullSubs},

{0,&Null, "4 系統(tǒng)設(shè)置", &NullData, RootMenu, SystemMenu, NullSubs},

{0,&Null, "5 出廠校準(zhǔn)", &NullData, RootMenu, DebugMenu, NullSubs},

{0,&Null, "6 系統(tǒng)信息", &NullData, RootMenu, HelpMenu, NullSubs},

};

4.2 子菜單目錄

struct MenuItem code SystemMenu[]=

{ {3,"-系統(tǒng)設(shè)置-","1 通信設(shè)置",&NullData,MainMenu,ComSetup, CopyCom},

{0,&Null, "2 時(shí)間設(shè)置",&NullData, MainMenu, ClockSetup, CopyClock},

{0,&Null, "3 記錄清除",&NullData, MainMenu, ClearSoe, NullSubs},

};

4.3 帶顯示數(shù)據(jù)子菜單目錄

struct MenuItem code ComSetup[]=

{

{ 5, "-通信設(shè)置-","1 通信方式:", ComData, SystemMenu, &Null, NullSubs},

{ 0, &Null, "2 通信地址:", ComData, SystemMenu, &Null, NullSubs},

{ 0, &Null, "3 RS485速率:", ComData, SystemMenu, &Null, NullSubs},

{ 0, &Null, "4 CAN速率:", ComData, SystemMenu, &Null, NullSubs},

{ 0, &Null, "5 保存", ComData, SystemMenu, &Null, SaveCom},

};

4.4 菜單數(shù)據(jù)結(jié)構(gòu)體

struct MenuData code ComData[]=

{ { 5, "Mode", 2, SetCom, ShowCom},

{ 0, "Addr", 2, SetCom, ShowCom},

{ 0, "RS485 Buad", 2, SetCom, ShowCom},

{ 0, "CAN Buad ", 2, SetCom, ShowCom},

{ 0, "Save", 1, SetCom, ShowCom},

};

5 目錄式菜單的技術(shù)優(yōu)勢(shì)

本文提出的菜單設(shè)計(jì)方法在多個(gè)項(xiàng)目的顯示單元中的應(yīng)用實(shí)踐,驗(yàn)證了該方案顯著優(yōu)點(diǎn)如下:(1)菜單目錄基于C語言結(jié)構(gòu)體定義,菜單內(nèi)容及菜單項(xiàng)之間的關(guān)系明確,一目了然,閱讀修改方便;(2)形成菜單目錄后,增加、刪除和修改菜單只需對(duì)應(yīng)的菜單目錄結(jié)構(gòu)體和對(duì)應(yīng)函數(shù)改動(dòng),不影響其他部分。(3)菜單條和數(shù)據(jù)融合成一體,顯示豐富,操作簡(jiǎn)便;(4)所有功能采用函數(shù)指針調(diào)用,程序代碼緊湊,運(yùn)行穩(wěn)定可靠;(5)目錄式菜單框架通用性強(qiáng),可移植性好;(6)根據(jù)設(shè)置參數(shù)或程序運(yùn)行狀態(tài),可以實(shí)現(xiàn)動(dòng)態(tài)變化的菜單。

6 結(jié)束語

本文介紹了基于C51的結(jié)構(gòu)體和函數(shù)指針調(diào)用的特點(diǎn),設(shè)計(jì)目錄式菜單程序,并在礦用產(chǎn)品中成功的應(yīng)用。通過該方法設(shè)計(jì)的菜單具有結(jié)構(gòu)緊湊、性能穩(wěn)定、功能強(qiáng)、移植性好等優(yōu)點(diǎn),具有很好的實(shí)用價(jià)值。

參考文獻(xiàn):

[1]陸錚,羅嘉.單片機(jī)C語言下LCD多級(jí)菜單的一種實(shí)現(xiàn)方法[J].工礦自動(dòng)化,2006(01):48-51.

[2]童長(zhǎng)飛.C8051F系列單片機(jī)開發(fā)與C語言編程[M].北京:北京航空航天大學(xué)出版社,2004.

第5篇

關(guān)鍵詞:C語言;程序設(shè)計(jì);教學(xué);結(jié)構(gòu)體;實(shí)驗(yàn)

中圖分類號(hào):G642 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2015)09-0163-02

Abstract: C language programming is a profession course in the computer special field of study, and it is usually the first programming course to the students. So the experiment teaching of the course is too important. It mainly discusses the teaching design of structures in this paper, which can help the students to grasp the basic knowledge about structures, and can solve problems by using arrays of structure and linked lists. It proves that the teaching design can stimulate the students’ study interest.

Key words:C language; programming; teaching; structure; experiment

《C語言程序設(shè)計(jì)》這門課一般是計(jì)算機(jī)專業(yè)學(xué)生入學(xué)時(shí)所接觸到的第一門程序設(shè)計(jì)課程,這門課程需要學(xué)生掌握程序設(shè)計(jì)的方法,用C語言編程解決問題。在現(xiàn)實(shí)問題求解時(shí),往往用簡(jiǎn)單數(shù)據(jù)類型描述問題對(duì)象時(shí)可能不是很方便和準(zhǔn)確,例如,描述職工信息這樣不同類型的數(shù)據(jù)組合時(shí),這時(shí)就需要定義一種構(gòu)造類型的數(shù)據(jù)結(jié)構(gòu)來描述,這就是結(jié)構(gòu)體。而且,本文認(rèn)為結(jié)構(gòu)體是實(shí)現(xiàn)了數(shù)據(jù)的封裝,在一定程度上體現(xiàn)了封裝的特性,對(duì)后續(xù)課程的教學(xué)有一定的啟發(fā)性。所以,結(jié)構(gòu)體教學(xué)是C語言程序設(shè)計(jì)的一個(gè)重要的部分,同樣,在實(shí)驗(yàn)課教學(xué)中結(jié)構(gòu)體的實(shí)驗(yàn)教學(xué)也是重要的一個(gè)環(huán)節(jié),特別是鏈表方面的實(shí)驗(yàn)教學(xué)對(duì)后續(xù)課程,如《數(shù)據(jù)結(jié)構(gòu)》起著基礎(chǔ)性的作用。本文主要是對(duì)結(jié)構(gòu)體的實(shí)驗(yàn)教學(xué)的設(shè)計(jì)進(jìn)行探討。

1 結(jié)構(gòu)體實(shí)驗(yàn)教學(xué)的設(shè)計(jì)

結(jié)構(gòu)體實(shí)驗(yàn)教學(xué)在教學(xué)時(shí)設(shè)計(jì)了3個(gè)實(shí)驗(yàn)題目,這三個(gè)實(shí)驗(yàn)題目的難度由易到難,試圖讓學(xué)生掌握結(jié)構(gòu)體變量、結(jié)構(gòu)體數(shù)組和鏈表的使用。

1.1 結(jié)構(gòu)體變量的實(shí)驗(yàn)設(shè)計(jì)

結(jié)構(gòu)體變量的實(shí)驗(yàn)屬于結(jié)構(gòu)體實(shí)驗(yàn)中比較簡(jiǎn)單的實(shí)驗(yàn),這個(gè)實(shí)驗(yàn)就是讓學(xué)生練習(xí)如何根據(jù)實(shí)際問題,用結(jié)構(gòu)體定義自己所需的類型,再使用這種類型定義變量,編寫程序去解決問題。

在實(shí)驗(yàn)教學(xué)中,教師要求學(xué)生解決如下的問題:要求用戶輸入三個(gè)點(diǎn)的坐標(biāo),編程判斷這三個(gè)點(diǎn)是否可以構(gòu)成一個(gè)三角形,如果可以則輸出三角形的類型,即直角三角形、銳角三角形或者鈍角三角形。這個(gè)題目在實(shí)驗(yàn)課上是以程序填空題的形式提供,這樣既可以引導(dǎo)學(xué)生初次使用結(jié)構(gòu)體進(jìn)行編程,在填寫缺失的代碼過程中,鍛煉學(xué)生的程序閱讀能力。在題目設(shè)計(jì)中盡可能的考察學(xué)生以前的所學(xué)知識(shí)點(diǎn),比如,函數(shù)形參、函數(shù)調(diào)用、選擇結(jié)構(gòu)編程等等。

這個(gè)程序填空題首先要求完成圖1中所示的點(diǎn)的結(jié)構(gòu)體的設(shè)計(jì),從而讓學(xué)生掌握如何根據(jù)實(shí)際需要來定義結(jié)構(gòu)體這種類型。再要求學(xué)生完成圖1中input函數(shù)和len函數(shù)的填寫,讓學(xué)生掌握如何使用結(jié)構(gòu)體變量的成員分量,并注意函數(shù)的類型;judgeexist函數(shù)用于判斷三個(gè)點(diǎn)能否構(gòu)成三角形,在這個(gè)函數(shù)中強(qiáng)調(diào)邏輯運(yùn)算符的使用,同時(shí)讓學(xué)生注意函數(shù)的返回值類型,強(qiáng)調(diào)C語言的數(shù)據(jù)類型沒有邏輯型,若想表示真假這樣的邏輯型值可以用1和0這樣的數(shù)值型數(shù)據(jù)來表示。

圖2中的qcos函數(shù)在設(shè)計(jì)填空時(shí)主要考察的是指針的使用,讓學(xué)生加深指針作為函數(shù)形參傳遞的是地址值這一個(gè)概念的理解。這個(gè)函數(shù)在編寫時(shí)并不是很難,就是三角形余弦函數(shù)的使用,關(guān)鍵在于形參變量中指

針變量的引用,即諸如*cosA的賦值。而圖2中judgetype函數(shù)就是依據(jù)三個(gè)角的余弦值來判斷三角形是直角三角形、銳角三角形,還是鈍角三角形。這個(gè)函數(shù)在設(shè)計(jì)填空時(shí),主要是考察學(xué)生關(guān)系運(yùn)算符的使用,以及嵌套的選擇if語句的理解和應(yīng)用。圖3中主函數(shù)的設(shè)計(jì)填空主要是考察學(xué)生是否了解上述用戶自定義函數(shù)的功能,并通過填寫函數(shù)調(diào)用語句能正確的使用這些函數(shù),此外,還考察了switch多分支語句的使用。

這個(gè)題目總體來說設(shè)計(jì)的并不是很難,當(dāng)學(xué)生完成程序填空后,要求學(xué)生必須完成4種情況,即無法構(gòu)成三角形、構(gòu)成直角三角形、銳角三角形和鈍角三角形的數(shù)據(jù)測(cè)試,通過輸出的結(jié)果與預(yù)期結(jié)果作比較,從而檢查程序是否編寫正確。

1.2 結(jié)構(gòu)體數(shù)組的實(shí)驗(yàn)設(shè)計(jì)

結(jié)構(gòu)體數(shù)組的實(shí)驗(yàn)在結(jié)構(gòu)體實(shí)驗(yàn)中是中等難度的實(shí)驗(yàn),這個(gè)實(shí)驗(yàn)題目的設(shè)計(jì)主要是讓學(xué)生掌握結(jié)構(gòu)體數(shù)組的定義,讓學(xué)生了解結(jié)構(gòu)體數(shù)組元素的訪問和其他基本數(shù)據(jù)類型的數(shù)組元素訪問是類似的,如若要訪問某個(gè)數(shù)組元素的成員分量時(shí),需要在結(jié)構(gòu)體數(shù)組元素后加上“.成員分量名”。

在實(shí)驗(yàn)課時(shí),布置了如下的實(shí)驗(yàn)題目:輸入職工的職工號(hào)、姓名、工資和出生年、月、日,按職工工資由高到低輸出職工的職工號(hào)、姓名和周歲年齡。注意:輸入“#”表示輸入結(jié)束,假設(shè)最多只處理200個(gè)職工記錄。此題在定義職工信息這種數(shù)據(jù)類型時(shí),涉及到了出生年、月、日這種日期類型,而C語言的基本類型中沒有這種類型,因此,教師可以引導(dǎo)學(xué)生先寫出如圖4(a)所示的日期類型struct date,再引導(dǎo)學(xué)生思考職工類型如何定義,提示學(xué)生職工信息包含出生日期這樣的日期型數(shù)據(jù),建議定義出如圖4(b)所示的職工信息類型struct zg。一般地,學(xué)生會(huì)依據(jù)題目要求定義出struct zg的數(shù)組,其數(shù)組的大小為200。這個(gè)題目之所以這樣設(shè)計(jì)就是希望通過這個(gè)練習(xí)讓學(xué)生了解結(jié)構(gòu)體類型中的成員分量沒有具體類型要求,完全根據(jù)需要而設(shè)。

此題的另一個(gè)設(shè)計(jì)要點(diǎn)是排序算法在結(jié)構(gòu)體數(shù)組中的應(yīng)用,在課堂練習(xí)時(shí),有的學(xué)生使用的是冒泡排序法,有的則使用選擇排序法,但是在交換兩個(gè)struct zg的數(shù)組元素時(shí),有部分學(xué)生會(huì)注意交換結(jié)構(gòu)體數(shù)組元素的成員分量,那么這時(shí)就需要聲明交換結(jié)構(gòu)體數(shù)組元素和交換整型數(shù)組元素的方法類似,將結(jié)構(gòu)體數(shù)組元素看作一個(gè)整體。這個(gè)設(shè)計(jì)要點(diǎn)在于復(fù)習(xí)數(shù)組章節(jié)中所提到的排序算法。

此題最后一個(gè)設(shè)計(jì)要點(diǎn)是由已知的職工出生年、月、日求出該職工的周歲年齡,此處要求學(xué)生使用計(jì)算機(jī)的系統(tǒng)時(shí)間計(jì)算出職工的周歲年齡。為了能成功獲取計(jì)算機(jī)的系統(tǒng)時(shí)間,則要求學(xué)生在幫助菜單或者網(wǎng)上查找C中“time.h”所定義的time_t這個(gè)數(shù)據(jù)類型,讓學(xué)生了解typedef的用法;了解函數(shù)time()和localtime的用法,并能在程序中正確的使用;了解結(jié)構(gòu)體struct tm,掌握該結(jié)構(gòu)體中關(guān)于年、月、日表示的成員分量,讓學(xué)生特別注意每個(gè)成員分量所表示的意義及其取值的范圍,例如,成員分量tm_year表示的是年份,但是它的取值是從1900開始的一個(gè)整數(shù),若想正確獲得當(dāng)前的年份值,應(yīng)該是tm_year+1900。當(dāng)學(xué)生能正確地完成獲取系統(tǒng)時(shí)間的年、月、日的程序代碼設(shè)計(jì)后,引導(dǎo)學(xué)生思考如何計(jì)算周歲年齡,實(shí)際上就是用if嵌套語句完成多分支結(jié)構(gòu)的設(shè)計(jì)。這個(gè)設(shè)計(jì)要點(diǎn)是希望學(xué)生了解C程序設(shè)計(jì)過程中可能會(huì)出現(xiàn)書本上所未介紹過的知識(shí),這就需要學(xué)生通過其他方式,例如查閱工具書或者上網(wǎng)等手段來獲取所需的知識(shí),同時(shí),也復(fù)習(xí)了多分支結(jié)構(gòu)的程序設(shè)計(jì)。

此外,在編程時(shí)要求學(xué)生盡量不要程序中只有一個(gè)main()函數(shù),要盡量根據(jù)需要編寫用戶自定義函數(shù)。

1.3 鏈表的實(shí)驗(yàn)設(shè)計(jì)

鏈表實(shí)驗(yàn)的題目主要是讓學(xué)生熟悉結(jié)構(gòu)體與指針相結(jié)合,對(duì)鏈表有個(gè)初步認(rèn)識(shí),了解鏈表中的一些操作。題目與1.2中結(jié)構(gòu)體數(shù)組的題目非常類似,但是要求必須用鏈表來完成,從而讓學(xué)生熟悉鏈表這種結(jié)構(gòu)。實(shí)驗(yàn)題目是:輸入學(xué)生的學(xué)號(hào)、姓名和年齡,要求按學(xué)號(hào)由小到大輸出學(xué)生的學(xué)號(hào)、姓名和年齡,要求輸入“#”表示輸入結(jié)束。這個(gè)題目解決的方法很多,因?yàn)閷W(xué)生初次接觸鏈表,因此實(shí)驗(yàn)教學(xué)時(shí)沒有提出任何方法的限制,只是要求學(xué)生用單鏈表求解,在求解過程中要求學(xué)生注意鏈表的創(chuàng)建算法,鏈表的輸出算法,以及鏈表修改結(jié)點(diǎn)指針的一些操作。

首先,教師要引導(dǎo)學(xué)生正確的完成鏈表結(jié)點(diǎn)的定義,即指針與結(jié)構(gòu)體相結(jié)合,學(xué)生信息結(jié)點(diǎn)的定義可以如圖5所示。在求解問題時(shí),需要學(xué)生注意結(jié)點(diǎn)指針的操作。實(shí)驗(yàn)課上,有的學(xué)生在輸入學(xué)生信息時(shí),即建鏈表時(shí)采用插入排序的思想,將待插入的學(xué)生信息的結(jié)點(diǎn)插入到已建好的且有序的鏈表中,用這種方法創(chuàng)建鏈表后,鏈表本身就是有序的,那么只需用循環(huán)結(jié)構(gòu)輸出鏈表就可以完成問題的求解。在實(shí)驗(yàn)課上,會(huì)發(fā)現(xiàn)有的學(xué)生有了這個(gè)想法但是算法編寫有問題,教師在指導(dǎo)的過程中可以建議學(xué)生在建鏈表過程中,每插入一個(gè)結(jié)點(diǎn)后就完成當(dāng)前鏈表的輸出,從而有助于發(fā)現(xiàn)算法設(shè)計(jì)出錯(cuò)之處。

在實(shí)驗(yàn)課上,有的學(xué)生則先是創(chuàng)建鏈表,即將學(xué)生信息結(jié)點(diǎn)按輸入的順序插入到鏈表中,此時(shí)鏈表中的學(xué)生信息結(jié)點(diǎn)是無序的,再采用冒泡排序法或者選擇排序法對(duì)鏈表中的結(jié)點(diǎn)調(diào)整順序,最后編寫循環(huán)完成鏈表輸出。在調(diào)整結(jié)點(diǎn)時(shí)有的學(xué)生會(huì)出現(xiàn)算法思路不夠清晰,有點(diǎn)混亂這種現(xiàn)象,這時(shí)教師可以建議學(xué)生在草稿紙畫出鏈表結(jié)點(diǎn)的調(diào)整草圖,再依據(jù)圖示編寫代碼。在實(shí)驗(yàn)課上,有的學(xué)生采用排序算法調(diào)整結(jié)點(diǎn)時(shí)直接交換圖5所示結(jié)點(diǎn)的no、name和age值,這種方法很便捷,但是達(dá)不到鏈表練習(xí)的目的,因此,教師可以鼓勵(lì)學(xué)生再換一種算法。

2 結(jié)束語

本文給出了結(jié)構(gòu)體實(shí)驗(yàn)教學(xué)的三個(gè)實(shí)驗(yàn)題目,這三個(gè)題目有各自的重點(diǎn),而且題目有程序填空,也有程序設(shè)計(jì),讓學(xué)生由淺入深地逐步掌握結(jié)構(gòu)體的定義,使用結(jié)構(gòu)體變量和數(shù)組編程求解實(shí)際問題。并且實(shí)驗(yàn)題目中有的內(nèi)容是對(duì)課本上的知識(shí)進(jìn)行一定的擴(kuò)展,力圖培養(yǎng)學(xué)生的自學(xué)能力,因?yàn)樵趯?shí)際解決問題時(shí),有的知識(shí)可能是課堂上沒有提到的,因此,學(xué)生要學(xué)會(huì)查閱資料進(jìn)行自學(xué)。

參考文獻(xiàn):

[1] 胡明, 王紅梅. 程序設(shè)計(jì)基礎(chǔ)――從問題到程序[M]. 北京: 清華大學(xué)出版社, 2011.

[2] 孫燮華. C程序設(shè)計(jì)導(dǎo)引實(shí)驗(yàn)與習(xí)題解答[M]. 北京: 清華大學(xué)出版社, 2011.

[3] 羅永龍, 方群. C語言程序設(shè)計(jì)[M]. 北京: 科學(xué)出版社, 2013.

第6篇

全書共20章。1.Python編程101:對(duì)使用Python語言編程進(jìn)行總體介紹,包括創(chuàng)建對(duì)象、對(duì)象調(diào)用方法、運(yùn)算符重載、讀取文件方法、XML文件等內(nèi)容;2.計(jì)算復(fù)雜度:包括計(jì)算機(jī)體系結(jié)構(gòu)介紹、常見的計(jì)算復(fù)雜性、攤銷復(fù)雜度的方法等;3.遞歸:包括時(shí)棧和堆的概念、簡(jiǎn)單遞歸函數(shù)的編寫、運(yùn)行,遞歸計(jì)算機(jī)圖形學(xué)、列表與字符串等;4.排序:包括選擇排序、歸并排序、快速排序、鏈表、棧和隊(duì)列等內(nèi)容;5.集合與映射:數(shù)獨(dú)游戲介紹、集、散列等相關(guān)概念,最后分析規(guī)劃問題;6.樹:抽象語法樹和表達(dá)、前綴和后綴表達(dá)式、解析前綴表達(dá)式、二叉搜索樹等內(nèi)容;7.圖:包括圖的定義及理論、存儲(chǔ)結(jié)構(gòu)及算法實(shí)現(xiàn)、Kruskal算法、Dijkstra算法、圖的表示方法等;8.Bloom過濾器、Trie數(shù)據(jù)類型等相關(guān)內(nèi)容;9.堆:包括堆的主要思想及其建立、排序算法、與其他算法的比較等;10.平衡二叉搜索樹:二叉搜索樹的概念、存儲(chǔ)結(jié)構(gòu)與性質(zhì)、AVL樹與 Splay樹等具體實(shí)例;11.B樹:包括關(guān)系型數(shù)據(jù)庫的概念、B樹的組織結(jié)構(gòu)、優(yōu)勢(shì)、實(shí)現(xiàn)、B樹的插入與刪除等內(nèi)容;12.啟發(fā)式搜索:包括深度優(yōu)先搜索與廣度優(yōu)先搜索、A*搜索、最佳搜索等相關(guān)內(nèi)容;13.附錄A:整數(shù)操作符;14.附錄B:浮算子;15.附錄C:字符串運(yùn)算符和方法;16.附錄D:列表操作符和方法;17.附錄E:字典操作和方法;18.附錄F:Turtle方法;19附錄G:TurtleScreen方法;20.附錄H:完整的程序。

作者Kent D.Lee博士是美國(guó)艾奧瓦洲路德學(xué)院計(jì)算機(jī)科學(xué)教授,已成功出版兩本著作:Python編程基礎(chǔ)和編程語言基礎(chǔ)。另一作者Steve Hubbard博士是路德學(xué)院數(shù)學(xué)與計(jì)算機(jī)科學(xué)系教授。

本書介紹了初級(jí)與高級(jí)的數(shù)據(jù)結(jié)構(gòu)和算法問題,每一章開始提供了學(xué)習(xí)目標(biāo),復(fù)習(xí)題和編程練習(xí),以及眾多的例證;同時(shí)在相關(guān)的網(wǎng)站提供可下載的程序和補(bǔ)充文件。本書可以作為計(jì)算機(jī)學(xué)科相關(guān)專業(yè)的教材或參考書,同時(shí)對(duì)計(jì)算機(jī)科技工作者也有參考價(jià)值。

第7篇

關(guān)鍵詞:循環(huán)結(jié)構(gòu);C語言程序設(shè)計(jì);非計(jì)算機(jī)專業(yè)

中圖分類號(hào):TP393文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2012)26-6323-05

Discussion on Loop Structure Teaching in C Language Programming of Non-computer Specialty

XIA Yun

(College of Mathematics and Computer Science, Anhui Normal University , Wuhu 241000 , China)

Abstract: The teaching of loop structure is an important component in C language programming. This paper designed 5 teach? ing examples for the students of non-computer specialty. This paper analyzes the teaching progress in detail and emphasizes the teaching points of the loop structure teaching. And it produces a good effect in the actual teaching progress.

Key words: loop structure; C Language programming; non-computer specialty

大學(xué)計(jì)算機(jī)應(yīng)用基礎(chǔ)作為一門課程大約于20世紀(jì)90年代中期開設(shè),現(xiàn)在已成為大學(xué)里的計(jì)算機(jī)學(xué)習(xí)基礎(chǔ)課程,是所有非計(jì)算機(jī)專業(yè)大一新生的必修公共基礎(chǔ)課,也是培養(yǎng)學(xué)生基本素質(zhì)的一門重要課程[1]。作為大學(xué)計(jì)算機(jī)應(yīng)用基礎(chǔ)課程,理工類專業(yè)大部分會(huì)開設(shè)程序設(shè)計(jì)課程,有部分專業(yè)會(huì)開設(shè)C程序設(shè)計(jì)課程。C語言是一種語法靈活、適用范圍廣的高級(jí)程序設(shè)計(jì)語言。結(jié)構(gòu)化程序設(shè)計(jì)方法有三種基本結(jié)構(gòu):順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。順序結(jié)構(gòu)和分支結(jié)構(gòu)比較簡(jiǎn)單,循環(huán)結(jié)構(gòu)從教學(xué)上來說是重點(diǎn)也是難點(diǎn)。本文主要對(duì)C語言循環(huán)結(jié)構(gòu)教學(xué)進(jìn)行探討。

1教學(xué)內(nèi)容的分析

C語言循環(huán)結(jié)構(gòu)編程主要涉及到三種循環(huán)結(jié)構(gòu)語句while、do-while和for。本文作者認(rèn)為非計(jì)算機(jī)專業(yè)開設(shè)這門課程,主要是講解程序設(shè)計(jì)的方法,培養(yǎng)學(xué)生的編程能力和思維能力,因此,在教學(xué)中上述的三種語句可以以while語句為重點(diǎn),講解循環(huán)結(jié)構(gòu)編程的思想,do-while和for語句可以簡(jiǎn)單舉例說明它們的流程。在講解循環(huán)結(jié)構(gòu)編程分析時(shí),可以以流程圖或者用自然語言逐步描述操作步驟的形式,指出循環(huán)結(jié)構(gòu)編程關(guān)鍵是找到在什么情況下需要反復(fù)執(zhí)行某些操作,并找到這些反復(fù)執(zhí)行的操作是什么。

2教學(xué)用例的分析

在課程教學(xué)過程中,需要用一些例子來配合講解循環(huán)結(jié)構(gòu)的編程。在教學(xué)時(shí),選取一些比較合適的例子,可以很好地幫助學(xué)生理解所教授的內(nèi)容。教師在教學(xué)過程中除了要加強(qiáng)課堂啟發(fā)外,盡可能結(jié)合課程自身的特點(diǎn),注重學(xué)生現(xiàn)場(chǎng)演練,并采用任務(wù)驅(qū)動(dòng)、師生互動(dòng)、鼓勵(lì)學(xué)生等教學(xué)手段來提高其學(xué)習(xí)的主動(dòng)性和積極性[2]。

2.1導(dǎo)入的例子

在教學(xué)活動(dòng)中,講授后面知識(shí)內(nèi)容時(shí)要與前面知識(shí)相互呼應(yīng)[3],因此,在上課時(shí),可以以這樣的問題開始,例題1:用戶輸入正整數(shù)n值的大小后,要求計(jì)算1+2+3+…+n,將所得出的結(jié)果輸出。這個(gè)例題主要是復(fù)習(xí)前面的內(nèi)容,復(fù)習(xí)輸入、輸出函數(shù)和分支結(jié)構(gòu)的編程。該問題提出后,可以讓同學(xué)們思考一下,然后再進(jìn)行提問,提問時(shí)可以讓學(xué)生說出編程思路,若課堂時(shí)間比較多也可以請(qǐng)學(xué)生直接編寫源代碼并運(yùn)行。

提問時(shí),有的同學(xué)可能給出如下的順序結(jié)構(gòu)編程的解答:

步驟1:輸入整數(shù)n

步驟2:求s=(1+n)*n/2

步驟3:輸出s

while (j

{輸出i*j

j++;}

由此,得出在循環(huán)while (i

循環(huán)結(jié)構(gòu)是結(jié)構(gòu)化程序設(shè)計(jì)的一種重要結(jié)構(gòu),在教學(xué)中不僅需要學(xué)生掌握這種結(jié)構(gòu)的語法,更重要的是培養(yǎng)學(xué)生的設(shè)計(jì)思維和思考方法,本文主要是從教學(xué)的角度,對(duì)循環(huán)結(jié)構(gòu)的整個(gè)教學(xué)過程設(shè)計(jì)了5個(gè)教學(xué)用例,并對(duì)其進(jìn)行展開分析,重點(diǎn)是讓學(xué)生掌握循環(huán)結(jié)構(gòu)編程的思想,實(shí)際上就是在問題分析過程中找循環(huán)條件和循環(huán)操作,在實(shí)際教學(xué)中取得了較好的效果。

[1]何文海,吳明珠,謝劍剛.情商與智商相結(jié)合的教學(xué)模式[J].現(xiàn)代計(jì)算機(jī),2007(8):73-75.

[2]郭?;?陳允芳,王健.非計(jì)算機(jī)專業(yè)中“VB程序設(shè)計(jì)”教學(xué)方法初探[J].計(jì)算機(jī)教育,2009(18):98-100.