時(shí)間:2023-03-20 16:19:58
序論:在您撰寫c語言論文時(shí),參考他人的優(yōu)秀作品可以開闊視野,小編為您整理的7篇范文,希望這些建議能夠激發(fā)您的創(chuàng)作熱情,引導(dǎo)您走向新的創(chuàng)作高度。
感謝我已經(jīng)畢業(yè)的師兄徐日東、張凡、周志堅(jiān)、段云涌和夏志遠(yuǎn),他們曾經(jīng)給了我無私的幫助和鼓勵(lì),讓我學(xué)到很多。感謝汪健和程詩猛兩位師兄,他們豐富的工作經(jīng)驗(yàn)對于本文的硬件設(shè)計(jì)提供了很大的幫助。感謝同屆的張斌、李純和張登寶,他們是我學(xué)習(xí)、工作和生活上的伙伴,也是面對困難和挑戰(zhàn)時(shí)的戰(zhàn)友。感謝我的師妹鄧禎,師弟馮國平、古明生、周建瓊、楊帆、舒林、周宇杰、朱圣健、吳喧輝和張澤,從他們身上,我學(xué)到很多東西,和他們在一起的日子是讀研期間快樂的時(shí)光。
感謝在廣東普信公司實(shí)習(xí)時(shí)的同事們,他們在我第一次參加實(shí)際項(xiàng)目開發(fā)的過程中給了我莫大的幫助和鼓勵(lì)。特別要感謝我的項(xiàng)目經(jīng)理李旭和黃潤懷,是他們的信任給了我很多鍛煉的機(jī)會,也一直對他們給予我的生活上的照顧心存感激。和他們一起為廣州項(xiàng)目奮戰(zhàn)的一年多是我人生中一段難忘的經(jīng)歷。
感謝我的朋友Louis,Dick,Iris,Tracy,Sawyer,Joe,Jason,IceBear,以及更多我無法逐一列出名字的朋友,他們給了我無數(shù)的關(guān)心和鼓勵(lì),也讓我的研究生生活充滿了溫暖和歡樂。我非常珍視和他們的友誼!
感覺計(jì)算機(jī)學(xué)院研028班的我的同學(xué),感謝他們在學(xué)習(xí)和生活上給予我的幫助。
感謝生我養(yǎng)我的父母,他們給了我無私的愛,我深知他們?yōu)槲仪髮W(xué)所付出的巨大犧牲和努力,而我至今仍無以為報(bào)。祝福他們,以及那些給予我關(guān)愛的長輩,祝他們幸福、安康!
參考文獻(xiàn):
[1]裘宗燕.C++程序設(shè)計(jì)語言(特別版).北京機(jī)械工業(yè)出版社,2002.7.
[2]StandleyB.lippman.C++Primer中文版.人民郵電出版社,20006.3.
[3]譚浩強(qiáng).C程序設(shè)計(jì)(第二版).清華大學(xué)出版社出版,2005.6.
[4]錢能.C++程序設(shè)計(jì)教程.清華大學(xué)出版社,2005.5.
[5]沈美明.IBMPC匯編語言程序設(shè)計(jì).清華大學(xué)出版社,1993.9.
[6]錢曉捷.匯編語言程序設(shè)計(jì).電子工業(yè)出版社,2003.
【參考文獻(xiàn)】
[1]翟乃強(qiáng),隋樹林,匯編語言與C語言及VisualC++混合編程[J].青島科技大學(xué)學(xué)報(bào),2003,24(B09):136~138.
[2]錢曉捷,匯編語言程序設(shè)計(jì)(第二版)[M],電子工業(yè)出版社,2003.6.
[3]錢春英,淺談C語言與匯編語言混合編程的一些技術(shù)[J].南通航運(yùn)職業(yè)技術(shù)學(xué)院學(xué)報(bào),2005,4(1):50~52,55.
[4]郭曉梅,匯編語言與C語言的混合編程及應(yīng)用[J].南京農(nóng)專學(xué)報(bào),2002,18(4):49~52,62.
[5]普拉塔.CPrimerPlus(第五版)中文版[M].人民郵電出版社,2005.
[6]斯馬爾迪諾.教學(xué)技術(shù)與媒體[M].高等教育出版社,2008.
[7]教育部考試中心.全國計(jì)算機(jī)等級考試二級教程——C語言程序設(shè)計(jì)[M].2010年版.北京:高等教育出版社,2010.
參考文獻(xiàn):
[1]周以真.計(jì)算思維[J].中國計(jì)算機(jī)學(xué)會通訊,2007,(3):77-79.
[2]董榮勝.計(jì)算思維與計(jì)算機(jī)導(dǎo)論[J].計(jì)算機(jī)科學(xué),2009,(36):50-52.
[3]林旺.孫洪濤[J].基于軟件應(yīng)用的計(jì)算思維能力培養(yǎng)教學(xué)設(shè)計(jì).中國電化教育2014,(11):122-127.
當(dāng)今人類社會對“現(xiàn)代”的解釋是:當(dāng)時(shí)正在發(fā)生和存在的。我們可見的新的教育技術(shù)和新出現(xiàn)的教育技術(shù)?,F(xiàn)代教育技術(shù)是把現(xiàn)代教育理論應(yīng)用于教育、教學(xué)實(shí)踐的現(xiàn)代教育手段和方法的體系。包括以下幾個(gè)方面:①教育教學(xué)中應(yīng)用的現(xiàn)代技術(shù)手段,即現(xiàn)代教育媒體;②運(yùn)用現(xiàn)代教育媒體進(jìn)行教育、教學(xué)活動(dòng)的方法,即媒傳教學(xué)法;③優(yōu)化教育、教學(xué)過程的系統(tǒng)方法,即教學(xué)設(shè)計(jì)。
2現(xiàn)代教育技術(shù)
特征現(xiàn)代教育技術(shù)主要依托“現(xiàn)代信息技術(shù)手段”,涵蓋信息技術(shù)的教育技術(shù)手段組成的系統(tǒng)稱之為現(xiàn)代教育技術(shù)。信息技術(shù)正是指用一系列過程的各種先進(jìn)技術(shù)的應(yīng)用,包括微電子技術(shù)、多媒體技術(shù)、計(jì)算機(jī)技術(shù)、計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)和遠(yuǎn)距離通訊技術(shù)等方面。把這些技術(shù)引入到教育、教學(xué)過程中,可以大大提高信息處理的能力,即大大提高教與學(xué)的效率?,F(xiàn)代教育技術(shù)更加強(qiáng)調(diào)培養(yǎng)復(fù)合型人才的觀點(diǎn)。確立教學(xué)目標(biāo)既要考慮是否與社會與時(shí)俱進(jìn),又要考慮是否重點(diǎn)在培養(yǎng)學(xué)生的技能和綜合素質(zhì)。
3C語言程序設(shè)計(jì)
現(xiàn)代教育理念研究C語言是我院計(jì)算機(jī)類所有專業(yè)的一門必修專業(yè)基礎(chǔ)課,C語言是幫助學(xué)生認(rèn)識計(jì)算機(jī),并是所有后續(xù)專業(yè)程序課程(Java,C#)的基礎(chǔ),C語言培養(yǎng)學(xué)生提高邏輯分析能力,學(xué)習(xí)在實(shí)際工作中解決問題的方法和步驟。傳統(tǒng)C語言教學(xué)主要是以知識點(diǎn)講授輔助相應(yīng)章節(jié)的實(shí)驗(yàn)。內(nèi)容的安排知識點(diǎn)比較全面,學(xué)生通過學(xué)習(xí)64個(gè)學(xué)時(shí)的C語言程序設(shè)計(jì)可以基本掌握程序設(shè)計(jì)的方法。但是針對高職學(xué)生的特點(diǎn)普遍存在研究性學(xué)習(xí)不太適用的弱點(diǎn)。傳統(tǒng)的內(nèi)容安排不太合理,理論研究型學(xué)習(xí)略微顯得枯燥,長期的學(xué)習(xí)使學(xué)生缺乏興趣和動(dòng)力。從高職崗位需求分析,學(xué)生適合培養(yǎng)技能型人才。要求強(qiáng)動(dòng)手能力和先進(jìn)的技能應(yīng)用。
4C語言程序設(shè)計(jì)
現(xiàn)代教學(xué)內(nèi)容研究教學(xué)內(nèi)容的安排主要以培養(yǎng)程序設(shè)計(jì)思想為教學(xué)內(nèi)容的主線,圍繞技能培養(yǎng)的中心,積極培養(yǎng)學(xué)生動(dòng)手能力,化主動(dòng)解決被動(dòng)接受的局面。用多樣化教學(xué)手段設(shè)計(jì)教學(xué)主線貫穿知識點(diǎn),緊緊圍繞著一個(gè)主題案例,如學(xué)生信息成績管理程序,細(xì)化模塊和功能,循序漸進(jìn),逐漸延伸、拓展,隨著帶領(lǐng)學(xué)生不斷提出新的用戶需求并主動(dòng)設(shè)法解決,引出能滿足新要求的方法和相關(guān)知識點(diǎn)。學(xué)生從熟悉到掌握,從掌握到理解,逐步培養(yǎng)自主學(xué)習(xí)的能力。
5C語言程序設(shè)計(jì)現(xiàn)代方法研究
5.1教學(xué)內(nèi)容合理知識點(diǎn)以案例驅(qū)動(dòng)強(qiáng)調(diào)語法熟悉度和敏感度,大量練習(xí)知識點(diǎn)講練比例在1:5,注重培養(yǎng)學(xué)生的分析能力和動(dòng)手能力
5.2教學(xué)方法多樣教學(xué)方法以“以多媒體教學(xué)為主體”+“板書”+“現(xiàn)場演示編程”為主體,穿插案例分析教學(xué),基于問題的教學(xué)等,實(shí)驗(yàn)為主體內(nèi)容分層教學(xué)等。
5.3教學(xué)手段先進(jìn)常規(guī)教學(xué)與網(wǎng)絡(luò)教學(xué)相結(jié)合,借助于教學(xué)網(wǎng)站搭建師生交流和互動(dòng)的平臺。如C語言評測系統(tǒng),建立題庫系統(tǒng)。例如我院目前已經(jīng)建立了TOP訓(xùn)練營以及C語言評測系統(tǒng)的平臺。
6教材及需求的改革
6.1教材特色———針對性、先進(jìn)性本教材理論知識講解詳細(xì),適合學(xué)生自我學(xué)習(xí)本教材以“工學(xué)結(jié)合”為理念精選各種典型應(yīng)用的項(xiàng)講解和練習(xí),培養(yǎng)學(xué)生在學(xué)習(xí)中適應(yīng)崗位。
6.2教材運(yùn)用原則教材中的活動(dòng)設(shè)計(jì)以學(xué)生為本,以培養(yǎng)學(xué)生的職業(yè)能力和素質(zhì)為目標(biāo),內(nèi)容具體,并具可操作性。
6.3教輔使用原則可充分利用網(wǎng)絡(luò)資源,通過網(wǎng)絡(luò)在線閱讀或者下載相關(guān)輔助參考書,題量充分,讓學(xué)生可以課后練習(xí)。
7總結(jié)
任何一個(gè)好的跨平臺軟件開發(fā)的實(shí)現(xiàn),主要還是對整體設(shè)計(jì)的把握,跨平臺程序設(shè)計(jì)要求實(shí)現(xiàn)與平臺無關(guān)的代碼,在設(shè)計(jì)和編寫的過程中,還要對軟件的架構(gòu)和整體配置的合理性問題作出考慮。思路,我們可以結(jié)合自身學(xué)習(xí)和實(shí)踐經(jīng)驗(yàn)在程序設(shè)計(jì)方面充分利用開源的代碼和程序,就可以讓跨平臺的設(shè)計(jì)更加地趨于成功。
2C++程序設(shè)計(jì)語言跨平臺開發(fā)的策略
我們在編寫程序代碼的時(shí)候,總是要把編輯策略放在首位,針對于不同的OS,在其上創(chuàng)建和編輯文本文件,就要遵循不同的規(guī)則。比如行結(jié)束符,在Windows操作系統(tǒng)和DOS操作系統(tǒng)中普遍采用回車鍵,而在Unix中卻使用的是換行符號。這種細(xì)微的差別就是跨平臺軟件開發(fā)必須考慮的問題。那么當(dāng)我們要想把其中一個(gè)平臺上編寫的代碼放在另一個(gè)操作系統(tǒng)上運(yùn)行,極有可能出現(xiàn)不被正確解釋的現(xiàn)象。另外,對于不同的操作平臺其tab鍵的功能也有很大的區(qū)別,主要體現(xiàn)在間距上。那么我們在編程的時(shí)候要注重這些差別,保證代碼的書寫和閱讀對于不同的操作平臺都是一致的,增加程序的可讀性,進(jìn)而也就實(shí)現(xiàn)了跨平臺的思想。所以在每次開發(fā)之前都需要針對開發(fā)策略制定相應(yīng)的規(guī)則:統(tǒng)一使用四個(gè)空格鍵來代替tab,也就是\t格式。Windows下的源文件代碼需要存儲在UNIX的文件格式,或者說是在Windows下的文件編寫完成之后,通過DOS2UNIX命令實(shí)現(xiàn)文本格式的轉(zhuǎn)換。
3處理器差異的控制
鑒于C++語言自身語言的特點(diǎn),建立了一個(gè)跨平臺的抽象代碼庫,在不同的平臺和編譯器上進(jìn)行合理的規(guī)劃代碼。C++語言里普遍使用了抽象,像BOOST和StardardTemplateLibrary。Boost標(biāo)準(zhǔn)類在不斷的發(fā)展和改進(jìn)過程中,完全能夠幫助跨平臺操作中的軟件和程序來適應(yīng)OS系統(tǒng)庫的內(nèi)部接口的不同,可惜這些不足以解決全部問題,主要是因?yàn)槟壳癇oost沒有包含所有的庫函數(shù)的類庫,又會出現(xiàn)不確定的情況,那么關(guān)于C++語言的部分也應(yīng)該及時(shí)的維護(hù)和更新。在平臺上,利用庫封裝代碼,又在不同的平臺下調(diào)用已達(dá)到統(tǒng)一代碼的目的。
4利用wxWidgets開發(fā)跨平臺軟件
wxWidgets是一種跨平臺開發(fā)的軟件包,目前使得在跨平臺的圖像設(shè)計(jì)方面使用自身的程序。因?yàn)槠浼嫒菪韵喈?dāng)?shù)暮?,對于Windows,Linux,Unix等都兼容。而且,wxWidgets的底層是用C++程序設(shè)計(jì)語言實(shí)現(xiàn)的。下面用一個(gè)實(shí)例將說明wxWidgets的跨平臺問題。首先創(chuàng)造一個(gè)wxFrame的實(shí)例,并制定長寬和屏幕上的位置。然后,新建一個(gè)垂直的sizewidget和頂層窗口的子sizer。然后,再創(chuàng)建一個(gè)垂直sizerwidget和一個(gè)水平子sizer。最后創(chuàng)建wxStatic實(shí)例以及為這個(gè)敞口應(yīng)用中添加事件響應(yīng)。以下將展示一部分核心代碼。在設(shè)置完這個(gè)窗口之后,還需要新建一個(gè)類實(shí)現(xiàn)一寫功能。
5結(jié)論
C語言是在B語言的基礎(chǔ)上完善形成的。1967年,英國的MartinRichards推出了BCPL語言,且在1970年,美國的KenThompson以BCPL語言為基礎(chǔ)推出了B語言。而B語言的功能有限、語言簡單,并不能完全滿足計(jì)算機(jī)軟件編程需要。在此基礎(chǔ)上,許多研究者加強(qiáng)對計(jì)算機(jī)編程語言的研究,經(jīng)過多次試驗(yàn),在B語言的基礎(chǔ)上,對其進(jìn)行完善,最終在1972年美國貝爾實(shí)驗(yàn)室D.M推出了C語言。1978年后,大、中、小型計(jì)算機(jī)對C語言進(jìn)行移植,將其作為系統(tǒng)設(shè)計(jì)語言,為系統(tǒng)程序編寫提供條件。在各種計(jì)算機(jī)編程語言中,一切計(jì)算機(jī)語言的基礎(chǔ)是C語言。它是一門高級語言,靈活方便,具有匯編語言、高級語言的特點(diǎn),簡潔緊湊。同時(shí),C語言可移植性強(qiáng),應(yīng)用廣泛,表達(dá)力強(qiáng)、功能豐富,適用于多種操作系統(tǒng),可進(jìn)行自由書寫,在信息技術(shù)發(fā)展方面發(fā)揮積極作用。
2軟件編程技巧
2.1C語言的特有函數(shù)在計(jì)算機(jī)軟件編程中,每一個(gè)函數(shù)都具有一定的功能,而在C語言編程過程中,需要應(yīng)用一些特有函數(shù)。對于函數(shù)而言,函數(shù)名對函數(shù)功能進(jìn)行反映,因此,在定義函數(shù)的過程中,程序員需要定義函數(shù)名字、參數(shù)名、返回值類型等。同時(shí),由于在編程過程中,C編譯系統(tǒng)提供庫函數(shù),且該系統(tǒng)首先定義好了這些函數(shù),因此在調(diào)用程序時(shí),程序員通過#include指令”,在所有文件中引入相關(guān)的頭文件,從而便可實(shí)現(xiàn)程序調(diào)用。例如,在運(yùn)用程序時(shí),當(dāng)應(yīng)用到sqrt函數(shù)時(shí),頭文件中必須包含#include“string.h”,以此確保程序的正常運(yùn)行。
2.2指針的靈活運(yùn)用在軟件編程中,指針的使用極為重要,賦值的實(shí)現(xiàn)需要指針的控制,從而建立變量關(guān)系,且編程的難度與指針運(yùn)用的大小密切相關(guān)。因此,在復(fù)雜編程工作的完成中,程序員需要熟練運(yùn)用指針,明確指針使用的作用,進(jìn)行編程。指針是特殊類型變量的一種,可幫助程序員解決程序設(shè)計(jì)中遇到的問題,其具有指針名、值、指針類型3要素。在編程過程中,使用者需要對指針類型、指針名進(jìn)行合理、科學(xué)定義,對其賦值,從而對指針、變量進(jìn)行區(qū)分。同時(shí),在指針調(diào)用過程中,利用C語言的特有函數(shù)科學(xué)、準(zhǔn)確定義函數(shù),并按照算法編程的方式,利用流程圖表達(dá)算法內(nèi)容。此外,在函數(shù)編程過程中,程序員具體設(shè)置函數(shù)的名字、參數(shù)名、返回值類型,設(shè)置好指令,且在C語言設(shè)置過程中,具體確定文件知識、位運(yùn)算,確保其滿足程序中的具體要求,明確二進(jìn)制的對象。對于文件中包含的程序文件、數(shù)據(jù)文件,應(yīng)將它們之間的步驟設(shè)置好,從而為數(shù)據(jù)查找提供方便。
2.3位運(yùn)算及算法技巧在計(jì)算機(jī)高級語言的運(yùn)算方法中,C語言的重要特點(diǎn)是位運(yùn)算。位運(yùn)算的對象是二進(jìn)制,具有唯一性、獨(dú)特性,是計(jì)算機(jī)軟件編程、程序運(yùn)行的基礎(chǔ),其根據(jù)相關(guān)程序要求的進(jìn)行符合要求的運(yùn)算。同時(shí),運(yùn)算、程序運(yùn)行過程中,程序文件必不可少,在編程中,程序設(shè)計(jì)員需要在文件中存儲程序,方便數(shù)據(jù)查找,提高運(yùn)行效率。此外,在程序設(shè)計(jì)中,程序的靈魂是算法,算法技巧的掌握對程序設(shè)計(jì)極為關(guān)鍵。算法可用自然語言、流程圖表述,而在用流程圖表示算法時(shí),要求程序員對流程圖符號進(jìn)行熟練掌握,并具備牢固的數(shù)學(xué)知識,提高編程效率。
3計(jì)算機(jī)軟件編程中C語言、匯編語言的結(jié)合
3.1匯編語言的嵌入方法隨著科學(xué)技術(shù)的快速發(fā)展,計(jì)算機(jī)軟件不斷更新,而C語言、匯編語言兩種語言的混合編程是計(jì)算機(jī)軟件開發(fā)中常使用的方式,以此提高計(jì)算機(jī)編程、程序開發(fā)效率,實(shí)現(xiàn)難度較高的編程任務(wù)。在具體編程中,在C語言程序中嵌入?yún)R編語言,在寄存器的存儲、轉(zhuǎn)換作用下是實(shí)現(xiàn)匯編語言的運(yùn)行。例如,如果在C語言源程序中嵌入一組匯編語句,就需要用大括號擴(kuò)充嵌入程序,進(jìn)而添加“asm”,且需要在asm前面放入指令代碼,并用分隔符“:”區(qū)分正常的C語言、匯編語言。其中,嵌入語言以大括號來表示,通過該形式的編程對編程的過程進(jìn)行簡化。當(dāng)匯編程序嵌入后,程序員定義程序,根據(jù)C語言指出函數(shù),定義函數(shù),并對不同的函數(shù)進(jìn)行區(qū)分,根據(jù)不同模塊的使用特點(diǎn),對目標(biāo)文件進(jìn)行分析,提高編程的可靠性。
3.2鏈接C語言、匯編語言在C語言、匯編語言程序編寫中,需要獨(dú)立設(shè)置編譯目標(biāo)代碼,然后實(shí)現(xiàn)鏈接。由于C語言、匯編語言程序能夠相互調(diào)用,且多個(gè)功能模塊共同組成一個(gè)任務(wù),合適的語言獨(dú)立編程功能模塊。因此,在編程中,程序員應(yīng)根據(jù)每個(gè)模塊特點(diǎn),設(shè)置編程,形成目標(biāo)文件,使其成為可執(zhí)行文件。同時(shí),在C語言編程過程中,匯編程序需要調(diào)用函數(shù)、定義變量,這樣,程序員就需要對寄存器的使用、參數(shù)傳遞、子程序的返回值、變量及函數(shù)調(diào)用、存儲模式等問題進(jìn)行考慮,特別需要注意參數(shù)傳遞問題。在編程中,根據(jù)堆棧匯編程序傳遞參數(shù),并按照參數(shù)傳遞原則進(jìn)行程序編程。例如,在Voidaa(char*p,inti)函數(shù)中,利用匯編語言編寫該函數(shù),在系統(tǒng)調(diào)用在小內(nèi)存模式下進(jìn)行,寫為aa(&q,n)。而在系統(tǒng)運(yùn)行中,在堆棧中壓入n,并為了實(shí)現(xiàn)對存儲數(shù)據(jù)的存取,傳遞參數(shù)。此外,由于C語言程序、調(diào)用的子程序的編程使用的是同一個(gè)堆棧,這樣,就會產(chǎn)生pushbppopbp、sp兩個(gè)執(zhí)行指令,設(shè)置這兩個(gè)指令,為執(zhí)行過程的使用提供方便。
3.3C語言、匯編語言混合編程實(shí)驗(yàn)分析在混合軟件具體編程中,一般情況下,在5個(gè)數(shù)中比較程序功能,從而對最小數(shù)值進(jìn)行確定。由于匯編的子程序、主程序共同組成了所編程序,運(yùn)用C語言編寫主程序,利用匯編語言編寫子程序,而最小數(shù)值通過主程序的調(diào)用得到確定。在編程中,用min.c*表示主程序,用qiumin.asm表示子程序,C語言、匯編語言結(jié)合,軟件之間進(jìn)行交流,從而使程序運(yùn)行速度得以提高。在程序運(yùn)行中,需要具體編程程序設(shè)計(jì)過程中的內(nèi)存模式、寄存器分配等,確保程序設(shè)計(jì)語言的相互協(xié)同,使外部接口處于正常使用狀況,為編程中的外部調(diào)用功能的實(shí)現(xiàn)提供保障。
4C語言多項(xiàng)式除法的程序設(shè)計(jì)
4.1設(shè)計(jì)流程在軟件編程中利用C語言,對計(jì)算機(jī)軟件的實(shí)用性進(jìn)行探索。在C語言多項(xiàng)式除法的程序設(shè)計(jì)中,實(shí)驗(yàn)設(shè)計(jì)的建立依據(jù)循環(huán)冗余的結(jié)構(gòu)進(jìn)行,設(shè)置循環(huán)冗余驗(yàn)碼編制軟件程序。在此過程中,程序員需先對函數(shù)名稱進(jìn)行定義,了解函數(shù),對函數(shù)的初始位置進(jìn)行確定,進(jìn)而建立數(shù)據(jù)庫。此后,在C語言的基礎(chǔ)上,程序員編程、計(jì)算函數(shù),并在此過程中,一個(gè)冗余余數(shù)在系統(tǒng)中自動(dòng)生成,在remainder文件中存儲余數(shù),確定程序的起始文件。最后,根據(jù)系統(tǒng)運(yùn)行的結(jié)果,結(jié)合軟件需求,程序員科學(xué)分析計(jì)算機(jī)軟件實(shí)驗(yàn),此時(shí),如果計(jì)算結(jié)果能夠滿足軟件運(yùn)行需求,則說明軟性運(yùn)行正常。如果計(jì)算結(jié)果不能夠滿足軟件運(yùn)行需求,則需要程序員仔細(xì)檢查軟件編程過程,發(fā)現(xiàn)問題,解決問題。在C語言基礎(chǔ)上,對軟件編程實(shí)驗(yàn)流程進(jìn)行設(shè)計(jì),簡化編程過程,提高實(shí)驗(yàn)結(jié)果的準(zhǔn)確性。
4.2程序應(yīng)用很多領(lǐng)域的發(fā)展過程都需要運(yùn)用到C語言多項(xiàng)式除法程序的編程,該編程使軟件應(yīng)用的實(shí)際價(jià)值得到最大程度的發(fā)揮,并拓寬了混合語言在多項(xiàng)式除法的應(yīng)用范圍。在C語言、編程語言混合語言的使用中,程序員應(yīng)及時(shí)定義函數(shù),通過函數(shù)名對函數(shù)性質(zhì)進(jìn)行準(zhǔn)確體現(xiàn),獲取準(zhǔn)確的余數(shù)結(jié)果,確保計(jì)算機(jī)軟性系統(tǒng)高效運(yùn)行。
5結(jié)語
關(guān)鍵詞FranklinC51編譯器匯編語言結(jié)構(gòu)化設(shè)計(jì)模塊中斷
--------------------------------------------------------------------------------
在研制單片機(jī)應(yīng)用系統(tǒng)時(shí),匯編語言是一種常用的軟件工具。它能直接操作硬件,指令的執(zhí)行速度快。但其指令系統(tǒng)的固有格式受硬件結(jié)構(gòu)的限制很大,且難于編寫與調(diào)試,可移植性也差。隨著單片機(jī)硬件性能的提高,其工作速度越來越快,因此在編寫單片機(jī)應(yīng)用系統(tǒng)程序時(shí),更著重于程序本身的編寫效率。而FranklinC51交叉編譯器是專為80C51系列單片機(jī)設(shè)計(jì)的一種高效的C語言編譯器,使用它可以縮短開發(fā)周期,降低開發(fā)成本,而且開發(fā)出的系統(tǒng)易于維護(hù),可靠性高,可移植性好,即使在代碼的使用效率上,也完全可以和匯編語言相比,因此目前它已成為開發(fā)80C51系列單片機(jī)的流行工具。
1C51語言程序設(shè)計(jì)的基本技巧
C語言是一種高級程序設(shè)計(jì)語言,它提供了十分完備的規(guī)范化流程控制結(jié)構(gòu)。因此采用C51語言設(shè)計(jì)單片機(jī)應(yīng)用系統(tǒng)程序時(shí),首先要盡可能地采用結(jié)構(gòu)化的程序設(shè)計(jì)方法,這樣可使整個(gè)應(yīng)用系統(tǒng)程序結(jié)構(gòu)清晰,易于調(diào)試和維護(hù)。對于一個(gè)較大的程序,可將整個(gè)程序按功能分成若干個(gè)模塊,不同的模塊完成不同的功能。對于不同的功能模塊,分別指定相應(yīng)的入口參數(shù)和出口參數(shù),而經(jīng)常使用的一些程序最好編成函數(shù),這樣既不會引起整個(gè)程序管理的混亂,還可增強(qiáng)可讀性,移植性也好。
在程序設(shè)計(jì)過程中,要充分利用C51語言的預(yù)處理命令。對于一些常用的常數(shù),如TRUE,F(xiàn)ALSE,PI以及各種特殊功能寄存器,或程序中一些重要的依據(jù)外界條件可變的常量,可采用宏定義"#define"或集中起來放在一個(gè)頭文件中進(jìn)行定義,再采用文件包含命令"#include"將其加入到程序中去。這樣當(dāng)需要修改某個(gè)參量時(shí),只須修改相應(yīng)的包含文件或宏定義,而不必對使用它們的每個(gè)程序文件都作修改,從而有利于文件的維護(hù)和更新?,F(xiàn)舉例說明如下:
例1對于不同的單片機(jī)晶振,程序取不同的延時(shí)時(shí)間,而且可根據(jù)外界條件的變化修改延時(shí)時(shí)間的長短。對于這樣的程序,可利用宏定義和條件編譯來實(shí)現(xiàn)。程序如下:
#defineflag1
#ifdefflag==1
#definefosc6M
delay=10;
#elifflag==0
#definefosc8M
delay=12;
#else
#definefosc12M
delay=20;
#endif
main()
{
for(I=0;I<delay;I++);
}
這樣源程序不作任何修改就可適用于不同時(shí)鐘頻率的單片機(jī)系統(tǒng),并可根據(jù)情況的不同取不同的delay值,完成不同的目的。
2C51語言與匯編語言程序的混合編程
C51編譯器能對C語言源程序進(jìn)行高效率的編譯,生成高效簡潔的代碼,在絕大多數(shù)場合采用C語言編程即可完成預(yù)期的目的。但有時(shí)為了編程直觀或某些特殊地址的處理,還須采用一定的匯編語言編程。而在另一些場合,出于某種目的,匯編語言也可調(diào)用C語言。在這種混合編程中,關(guān)鍵是參數(shù)的傳遞和函數(shù)的返回值。它們必須有完整的約定,否則數(shù)據(jù)的交換就可能出錯(cuò)。下面就以力源公司的10位串行A/D轉(zhuǎn)換器TLC1549為例說明C語言程序與匯編語言程序的調(diào)用。
圖1TLC1549管腳圖
1549的管腳圖和時(shí)序圖分別如圖1和圖2所示,假定DATAOUT接P1.0,接P1.1,CLOCK接P1.2。
1549的具體特性請查閱有關(guān)資料。
例2C語言程序與匯編語言程序的調(diào)用,其子程序如下:
PUBLICAD;入口地址
SEG_ADSEGMENTCODE;程序段
RSEGSEG_AD
USING0
AD:MOVR6,#00
MOVR7,#00
SETBP1.1
ACALLDELAY
CLRP1.1
ACALLDELAY
MOVR0,#10
RR0:SETBP1.2
NOP
CLRP1.2
DJNZR0,RR0
ACALLDELAY
MOV30H,R6;A/D轉(zhuǎn)換的高
;兩位保存在R6中
ACALLCIR
MOVR6,30H
SETBP1.2
NOP
CLRP1.2
MOV30H,R6
ACALLCIR
MOVR6,30H
MOVR0,#8;A/D轉(zhuǎn)換的低
;8位保存在R7中
RR2:SETBP1.2
NOP
CLRP1.2
MOV30H,R7
ACALLCIR
MOVR7,30H
DJNZR0,RR2
RET
CIR:CLRC
MOVC,P1.0
MOVA,30H
RLCA
MOV30H,A
RET
END
在以上程序中,函數(shù)的返回值為一無符號整型數(shù),根據(jù)調(diào)用規(guī)則,返回值的高位必須在R6中,低位在R7中,這樣才可保證數(shù)據(jù)的傳遞不出錯(cuò)。另外,在調(diào)用過程中,必須注意寄存器的入棧。這樣在以后用到A/D轉(zhuǎn)換時(shí),在C語言中調(diào)用匯編語言子程序AD()即可。
3C51中斷處理過程
C51編譯器支持在C源程序中直接開發(fā)中斷過程,因此減輕了使用匯編語言的繁瑣工作,提高了開發(fā)效率。中斷服務(wù)函數(shù)的完整語法如下:
void函數(shù)名(void)[模式]
[再入]interruptn[usingr]
其中n(0~31)代表中斷號。C51編譯器允許32個(gè)中斷,具體使用哪個(gè)中斷由80C51系列的芯片決定。r(0~3)代表第r組寄存器。在調(diào)用中斷函數(shù)時(shí),要求中斷過程調(diào)用的函數(shù)所使用的寄存器組必須與其相同。"再入"用于說明中斷處理函數(shù)有無"再入"能力。C51編譯器及其對C語言的擴(kuò)充允許編程者對中斷所有方面的控制和寄存器組的使用。這種支持能使編程者創(chuàng)建高效的中斷服務(wù)程序,用戶只須在C語言下關(guān)心中斷和必要的寄存器組切換操作。
例3設(shè)單片機(jī)的fosc=12MHz,要求用T0的方式1編程,在P1.0腳輸出周期為2ms的方波。
用C語言編寫的中斷服務(wù)程序如下:
#include<reg51.h>
sbitP1_0=P1^0;
voidtimer0(void)interrupt1using1{
/*T0中斷服務(wù)程序入口*/
P1_0=!P1_0;
TH0=-(1000/256);/*計(jì)數(shù)初值重裝*/
TL0=-(1000%256);
}
voidmain(void)
{
TMOD=0x01;/*T0工作在定時(shí)器方式1*/
P1_0=0;
TH0=-(1000/256);/*預(yù)置計(jì)數(shù)初值*/
TL0=-(1000%256);
EA=1;/*CPU開中斷*/
ET0=1;/*T0開中斷*/
TR0=1;/*啟動(dòng)T0*/
do{}while(1);
}
在編寫中斷服務(wù)程序時(shí)必須注意不能進(jìn)行參數(shù)傳遞,不能有返回值。
學(xué)習(xí)C語言程序設(shè)計(jì)應(yīng)當(dāng)充分注意實(shí)驗(yàn)環(huán)節(jié)。首先老師在上實(shí)驗(yàn)課時(shí)盡量要求學(xué)生多編寫程序,多上機(jī)調(diào)試程序,上機(jī)實(shí)驗(yàn)的目的決不僅是為了驗(yàn)證所編程序的正確性,其主要目的在于讓學(xué)生熟練掌握上機(jī)操作要領(lǐng)和調(diào)試程序技術(shù),積累編程經(jīng)驗(yàn)。其次上機(jī)實(shí)驗(yàn)可以加深學(xué)生對講授內(nèi)容的理解,尤其是一些語法規(guī)定,光靠課堂講授比較枯燥又難以記住,但它們又很重要,通過多次上機(jī)就能自然地熟練掌握,通過上機(jī)來掌握語法規(guī)則是行之有效的一種方法。最后,學(xué)生在上機(jī)調(diào)試通過一個(gè)程序后,可以自己改變程序中某些部分,甚至故意設(shè)置一些障礙,觀察和分析在不同情況下的編譯和運(yùn)行結(jié)果。應(yīng)當(dāng)說,上機(jī)實(shí)驗(yàn)的重要性絕不亞于課堂聽課,這是鞏固和發(fā)展課堂知識的十分重要的環(huán)節(jié)。
2C語言實(shí)驗(yàn)課存在的問題
目前在不少高校C語言實(shí)驗(yàn)教學(xué)活動(dòng)中,經(jīng)常會出現(xiàn)以下一些問題:
2.1沒有充分調(diào)動(dòng)學(xué)生學(xué)習(xí)的積極性。大部分學(xué)生在學(xué)習(xí)程序設(shè)計(jì)以前只知道使用計(jì)算機(jī)娛樂或辦公,認(rèn)為計(jì)算機(jī)的學(xué)習(xí)應(yīng)該很輕松。但是C語言的許多基礎(chǔ)知識都是概念性強(qiáng)、理論性強(qiáng),內(nèi)容豐富且抽象,具有嚴(yán)密邏輯性的,學(xué)習(xí)難度比較大。這時(shí)有的學(xué)生會產(chǎn)生畏難情緒,而老師又沒有及時(shí)引導(dǎo),因此許多學(xué)生學(xué)習(xí)興趣開始降低,不聽老師講授理論課,甚至連實(shí)驗(yàn)課也干脆不去。
2.2很多高校的C語言課一般是理論課和實(shí)驗(yàn)課分開教學(xué),任課老師只負(fù)責(zé)理論教學(xué),實(shí)驗(yàn)部分則是把學(xué)生丟到機(jī)房由實(shí)驗(yàn)室老師負(fù)責(zé)輔導(dǎo),任課老師很少或基本不去機(jī)房,學(xué)生上機(jī)調(diào)試程序的自覺性當(dāng)然很差,就算任課老師布置了作業(yè),也有不少同學(xué)在偷偷玩游戲浪費(fèi)時(shí)間,有同學(xué)有問題也是由輔導(dǎo)老師負(fù)責(zé)解答。任課老師和輔導(dǎo)老師溝通不夠,學(xué)生到底哪里不懂,上機(jī)時(shí)在干什么這些情況任課老師很少知道,當(dāng)然也不了解學(xué)生現(xiàn)階段的學(xué)習(xí)情況,教與學(xué)在這里脫節(jié)了,任課老師上課就失去了針對性。
2.3學(xué)生的作業(yè)存在抄襲現(xiàn)象,有的程序錯(cuò)誤百出,根本就沒上機(jī)調(diào)試過。對批改過的作業(yè),有相當(dāng)一部分學(xué)生也不認(rèn)真去分析,交作業(yè)僅僅是為了應(yīng)付老師。對于C語言這樣一門實(shí)踐性很強(qiáng)的課程,僅靠布置作業(yè)和書面批改作業(yè)的方法來督促學(xué)生學(xué)習(xí)和了解學(xué)習(xí)情況是很不全面和客觀的,很難提高教學(xué)質(zhì)量。
2.4學(xué)生每次上機(jī)時(shí)缺乏明確的量化指標(biāo),雖然教師事先也向?qū)W生布置應(yīng)準(zhǔn)備的內(nèi)容,但沒有督促和檢查,完成完不成無所謂。上機(jī)情況與期末總成績沒有直接關(guān)系,這常常導(dǎo)致學(xué)生上機(jī)前不充分準(zhǔn)備,上機(jī)過程中時(shí)間抓得不緊,思想上沒壓力,故而上機(jī)調(diào)試程序的能力提高不快。
2.5不少高校目前C語言的編譯軟件還在用DOS下的TC,現(xiàn)在是WINDOWS橫行的年代,如果還是堅(jiān)持讓學(xué)生面對純英文操作界面的TC,運(yùn)行一系列難以記憶的DOS命令,很多學(xué)生看第一眼就被嚇倒了,更不用說去仔細(xì)分析調(diào)試程序時(shí)產(chǎn)生的諸多英文提示,而且TC本生也有不支持鼠標(biāo)操作,輸入中文不方便等缺點(diǎn)。3C語言實(shí)驗(yàn)課教學(xué)改革的原則和方法
基于對以上問題的分析和認(rèn)識,在上機(jī)實(shí)踐教學(xué)中應(yīng)采取如下改進(jìn)措施:
3.1為了方便管理任課老師最好兼任實(shí)驗(yàn)室輔導(dǎo)老師,或者要和實(shí)驗(yàn)室輔導(dǎo)老師保持密切聯(lián)系、經(jīng)常溝通,及時(shí)了解學(xué)生的上機(jī)作業(yè)情況,適時(shí)調(diào)整授課進(jìn)度。加強(qiáng)機(jī)房管理,端正學(xué)生的上機(jī)目的。上機(jī)考勤、紀(jì)律情況記入期末成績。
3.2在每次上機(jī)時(shí),要求學(xué)生在規(guī)定時(shí)間內(nèi)獨(dú)立完成一定數(shù)量的練習(xí)題。老師(任課老師或?qū)嶒?yàn)室輔導(dǎo)老師)根據(jù)每人完成練習(xí)題的數(shù)量、質(zhì)量與時(shí)間,現(xiàn)場打分并做為平時(shí)成績,影響該課程的總成績。練習(xí)題可在上機(jī)之前提前告訴學(xué)生,方便他們事先做好準(zhǔn)備。這樣一來即可有效地避免學(xué)生互相抄襲作業(yè)、不求甚解的弊端。
3.3凡講過的基本操作方法,要求學(xué)生必須事先復(fù)習(xí)好,上機(jī)時(shí)一律不予解答。目的是提高學(xué)生理論課的聽課質(zhì)量。
3.4取消原來的書面作業(yè),換成學(xué)生寫實(shí)驗(yàn)報(bào)告,這樣可以幫助他們總結(jié)編程經(jīng)驗(yàn)。實(shí)驗(yàn)報(bào)告的格式可以參照上機(jī)實(shí)驗(yàn)指導(dǎo)書,此類書現(xiàn)在書店很多,比如譚浩強(qiáng)編著清華大學(xué)出版社出版的《C程序設(shè)計(jì)》就比較不錯(cuò)。
3.5改進(jìn)C語言的編譯環(huán)境,選用WINDOWS下的編譯軟件,比如WIN—TC,WIN—TC的內(nèi)核實(shí)質(zhì)上和TC是完全一樣的,只不過是操作界面不一樣,WIN—TC的優(yōu)勢主要就是純中文菜單,支持鼠標(biāo)操作,在WINDOWS下編輯TC代碼,充分利用WINDOWS的剪貼版,可以很方便的輸入和顯示漢字等,這是一個(gè)免費(fèi)軟件在網(wǎng)上很容易找到。
3.6筆者結(jié)合國內(nèi)外優(yōu)秀編程語言的實(shí)驗(yàn)教學(xué)方法和模式,并經(jīng)幾年來C語言的教學(xué)實(shí)踐,建議在有條件的情況下盡量將理論課和實(shí)驗(yàn)課的比例設(shè)置成1:1,千萬不可為趕教學(xué)進(jìn)度或其它任何理由而壓縮實(shí)驗(yàn)課時(shí),那樣做會得不償失。
4C語言實(shí)驗(yàn)課教學(xué)改革的效果
上述方案經(jīng)筆者若干循環(huán)的C語言教學(xué)實(shí)踐后,明顯感到改革前后的情況大不相同,取得了較好的教學(xué)效果:
4.1課堂聽課質(zhì)量明顯提高。因?yàn)樯蠙C(jī)時(shí)老師要當(dāng)場檢查程序,根本就不可能去抄襲別人的,就算抄來弄不明白也是白費(fèi)心機(jī)。要想上機(jī)時(shí)順利通過,課堂上必須認(rèn)真聽講,記筆記。因此課堂教學(xué)時(shí)學(xué)生基本上沒有遲到和無故缺的,并且課堂上都能專心聽講,記筆記,課間10分鐘還問個(gè)不停,因?yàn)樯蠙C(jī)時(shí)就沒有這么多時(shí)間詳細(xì)問老師了。
4.2實(shí)驗(yàn)課上機(jī)效率明顯提高。因?yàn)橐s快把程序調(diào)通過讓老師檢查,否則這次作業(yè)就沒成績了,上機(jī)時(shí)大家都在爭分奪秒,根本沒有人有時(shí)間去玩游戲、上網(wǎng),甚至于有的學(xué)生下課后都還要拖堂調(diào)試程序。