c語(yǔ)言程序設計實(shí)驗報告
隨著(zhù)社會(huì )不斷地進(jìn)步,接觸并使用報告的人越來(lái)越多,通常情況下,報告的內容含量大、篇幅較長(cháng)。相信很多朋友都對寫(xiě)報告感到非?鄲腊,下面是小編為大家整理的c語(yǔ)言程序設計實(shí)驗報告,希望能夠幫助到大家。
c語(yǔ)言程序設計實(shí)驗報告1
匯編語(yǔ)言課程是計算機專(zhuān)業(yè)的一門(mén)基礎主干課程,該課程與計算機硬件系統密切相關(guān)。主要介紹80x86cpu的指令系統、尋址方式、工作原理。通過(guò)該課程的學(xué)習,培養學(xué)生使用匯編語(yǔ)言編寫(xiě)程序的能力。加深學(xué)生對計算機內部http://運行機制的理解,為學(xué)生開(kāi)發(fā)系統軟件和與硬件相關(guān)的軟件打下堅實(shí)的基礎。
一、匯編語(yǔ)言課程教學(xué)現狀分析
1、與計算機硬件相關(guān),課程難度大
匯編語(yǔ)言課程是以特定的計算機硬件為基礎的,現在我國高等學(xué)校中普遍以80x86cpu系列計算機作為教學(xué)模型。首先介紹80x86cpu的工作方式、指令系統、尋址方式等與硬件有關(guān)的知識,然后講解匯編語(yǔ)言的編程方法和技巧,最后介紹系統輸入/輸出功能調用和有關(guān)文件的編程方法。匯編語(yǔ)言課程通常開(kāi)設在大學(xué)的第三學(xué)期或第四學(xué)期,學(xué)生只有高級語(yǔ)言的基礎,習慣于高級語(yǔ)言的自然表達形式。學(xué)生具備的計算機硬件的知識非常少,所以學(xué)習匯編語(yǔ)言課程時(shí)會(huì )感到非常困難,難于適應復雜的低級語(yǔ)言。特別是在開(kāi)始學(xué)習階段,許多學(xué)生經(jīng);煜拇嫫、內存,地址、內容等基本概念。
2、課程內容單一,學(xué)生學(xué)習興趣不足
目前多數高校講授匯編語(yǔ)言課程的主要目標是使學(xué)生掌握一種編程語(yǔ)言。因為匯編語(yǔ)言比較難學(xué),如果在教學(xué)中單純強調掌握編程技術(shù),學(xué)生可能失去學(xué)習該課程的興趣。在匯編語(yǔ)言中既沒(méi)有分支語(yǔ)句也沒(méi)有循環(huán)語(yǔ)句,學(xué)生必須使用比較指令和條件轉移指令來(lái)構造出分支結構和循環(huán)結構。學(xué)生更愿意選擇易于理解和編寫(xiě)程序的高級語(yǔ)言,如c、c++、java等。不喜歡使用復雜的匯編語(yǔ)言來(lái)編寫(xiě)程序。學(xué)生不了解匯編語(yǔ)言與其他課程的關(guān)系,只是把它當作一門(mén)必須參加考試的課程對待。
二、匯編語(yǔ)言教學(xué)改革的思想和方法
1、明確課程的目標
根據匯編語(yǔ)言教學(xué)大綱的要求,掌握一種基于硬件的匯編語(yǔ)言編程技術(shù)是課程的基本目標和要求。在教學(xué)中可以將匯編語(yǔ)言與一種高級語(yǔ)言(如c語(yǔ)言)進(jìn)行比較,通過(guò)學(xué)習匯編語(yǔ)言使學(xué)生更深刻地理解高級語(yǔ)言的工作原理。例如c中數組是連續的存儲空間,相對于匯編語(yǔ)言中的寄存器相對尋址方式;c指針的概念在匯編中就是內存單元的地址,是寄存器間接尋址方式;c函數中的參數傳遞,是用匯編語(yǔ)言中的堆棧段(stack)實(shí)現的。前面提到的幾個(gè)問(wèn)題是c語(yǔ)言課程中的教學(xué)重點(diǎn)和難點(diǎn),學(xué)生不易理解和掌握。通過(guò)匯編語(yǔ)言課程分析c語(yǔ)言中的這些問(wèn)題,可以使學(xué)生從計算機的工作原理角度出發(fā)真正理解了c語(yǔ)言中的這些知識,并且掌握了c語(yǔ)言編譯執行的過(guò)程,知道高級語(yǔ)言中分支結構和循環(huán)結構在執行時(shí)需要翻譯成一條一條的指令來(lái)完成。從計算機工作原理入手講解匯編語(yǔ)言可以使學(xué)生在學(xué)習一門(mén)計算機語(yǔ)言的同時(shí)深入理解計算機的工作原理,這是在高級語(yǔ)言教學(xué)中很難實(shí)現的。
教師在開(kāi)始上課時(shí),首先提出課程的目標和要求,同時(shí)要告訴學(xué)生匯編語(yǔ)言課程是《計算機組成原理》、《計算機接口與通訊技術(shù)》、《計算機操作系統》、《單片機原理》等課程的先修課,學(xué)好本課程會(huì )為其他相關(guān)課程的學(xué)習打下堅實(shí)的基礎。
2、課程群的建設
傳統的教學(xué)模式中,每位教師更多關(guān)注本課程的內容,很少考慮本課程對后續課程的影響以及課程之間的知識重復和交叉的問(wèn)題。為了更好地培養計算機專(zhuān)業(yè)學(xué)生的軟硬件綜合能力,將《計算機組成原理》、《匯編語(yǔ)言程序設計》及《計算機接口與通訊技術(shù)》三門(mén)課程納入到一個(gè)課程群來(lái)建設是十分必要的。建立基于軟硬件綜合能力培養的新教學(xué)體系和新實(shí)驗模式。首先,這三門(mén)課程從內容上是相互關(guān)聯(lián)的,例如匯編語(yǔ)言與計算機組成原理中都涉及到指令系統和尋址方式的章節,區別在于匯編語(yǔ)言是針對80x86cpu機型的,而計算機組成原理是不針對具體機型的。學(xué)生如果已經(jīng)完全掌握了匯編語(yǔ)言中的指令系統和尋址方式的概念,學(xué)習計算機組成原理時(shí)就易于理解和掌握該章節的內容,教師也可以花費較少的學(xué)時(shí)來(lái)完成該部分的教學(xué)。其次,這三門(mén)課程是相互影響的,例如在計算機接口課程的實(shí)驗中,學(xué)生需要使用匯編語(yǔ)言編寫(xiě)接口程序。所以,匯編語(yǔ)言課程學(xué)習的好壞會(huì )直接影響到計算機組成原理和計算機接口課程的學(xué)習效果。
3、優(yōu)化整合教學(xué)內容
匯編語(yǔ)言課程中會(huì )用到二進(jìn)制、十六進(jìn)制、補碼等知識,這些知識是先修課程信息技術(shù)基礎中的內容。在匯編語(yǔ)言課程中可以將本課程中使用頻繁的補碼概念、數的溢出判斷等知識點(diǎn)強調說(shuō)明,其他的內容讓學(xué)生自己復習,教師不必重復講解。
匯編語(yǔ)言指令多達幾百條,其中有的指令很少使用。所以在教學(xué)中要精心選取常用的指令,將功能相似的指令分組講解,選擇一組中某幾個(gè)指令詳細介紹指令的格式、功能和使用。在講解指令時(shí)教會(huì )學(xué)生學(xué)習指令的方法,起到舉一反三的效果,當學(xué)生今后遇到?jīng)]學(xué)過(guò)的'指令時(shí)可以自主學(xué)習。如果將所有的指令集中講解,學(xué)生不易掌握?梢詫⒅噶罘稚⒌礁鱾(gè)章節中,例如將比較指令和轉移指令分解到分支程序設計中,將串指令分解到循環(huán)程序設計中。指令要與程序相結合,讓學(xué)生在程序中學(xué)習指令、尋址方式和編程方法。
4、加強實(shí)驗教學(xué)環(huán)節
匯編語(yǔ)言是實(shí)踐性很強的一門(mén)課程,學(xué)生為了學(xué)好這門(mén)課程,必須多做實(shí)驗。教師需要科學(xué)合理地安排和布置實(shí)驗的題目,從而達到通過(guò)實(shí)驗提高學(xué)生能力的目的。同時(shí)要加強實(shí)驗環(huán)節的管理,將實(shí)驗分為實(shí)驗前、實(shí)驗中和實(shí)驗后這三個(gè)重要的階段。實(shí)驗前:教師提前一周布置實(shí)驗的題目并給出實(shí)驗的具體要求。學(xué)生根據題目要求給出解題方法;寄存器和內存單元的分配說(shuō)明;畫(huà)出程序的流程圖;寫(xiě)出源程序;寫(xiě)出實(shí)驗的步驟;設計程序測試用例和預期的運行結果。實(shí)驗中:如果匯編源程序時(shí)出現錯誤,學(xué)生需要記錄錯誤的類(lèi)型,按照系統的提示信息仔細檢查和分析,發(fā)現錯誤的原因并改正。當連接正確后,使用測試用例的數據運行程序,若運行結果不正確,利用debug調試工具分析產(chǎn)生錯誤的原因,記錄段寄存器、通用寄存器、標志位、內存單元值的變化情況。找到產(chǎn)生錯誤的指令并加以改正,直到運行結果正確。實(shí)驗后:學(xué)生按照教師的實(shí)驗報告要求,認真書(shū)寫(xiě)本次實(shí)驗的報告。實(shí)驗報告中包括以下內容:題目、要求、解題方法、寄存器和內存單元的分配說(shuō)明、程序的流程圖、源程序、實(shí)驗的步驟、設計程序測試用例和預期的運行結果、調試中出現的語(yǔ)法錯誤、debug調試的斷點(diǎn)設置、寄存器和內存單元的值、運行結果和實(shí)驗結論等。學(xué)生需在實(shí)驗完成的三日內完成并向教師提交實(shí)驗報告。教師要認真批閱學(xué)生的實(shí)驗報告,總結學(xué)生容易出現的普遍性錯誤,在下次實(shí)驗時(shí)提醒學(xué)生注意。
5、新技術(shù)的引入
學(xué)生在學(xué)習匯編語(yǔ)言課程時(shí)會(huì )與高級語(yǔ)言比較,學(xué)生普遍認為用高級語(yǔ)言編寫(xiě)程序更簡(jiǎn)單,所以一方面要引導學(xué)生意識到匯編語(yǔ)言在編寫(xiě)與硬件相關(guān)的底層系統軟件時(shí)具有高級語(yǔ)言所不具備的優(yōu)勢,同時(shí)也要與時(shí)俱進(jìn)地將新的技術(shù)和理念引入課堂中?梢栽黾颖Wo模式下編程和win32編程的技術(shù)。主要介紹基于windows窗口的應用程序結構:主程序、窗口主程序、窗口消息處理程序和用戶(hù)處理程序等。
6、教學(xué)內容與科研相結合
教學(xué)和科研是相輔相成的關(guān)系,在教學(xué)中及時(shí)引入科研成果可以提高學(xué)生學(xué)習的積極性,同時(shí)也可以保持教學(xué)內容的先進(jìn)性和實(shí)用性。將用匯編語(yǔ)言實(shí)現軟件的跟蹤與反跟蹤技術(shù)介紹給學(xué)生,對于有興趣的學(xué)生可以組成研究小組,在教師的指導下深入研究,提高學(xué)生對于實(shí)際問(wèn)題的分析和解決能力。
7、輔助教學(xué)資源的擴充
充分利用校園網(wǎng)絡(luò )平臺,建設匯編語(yǔ)言課程的學(xué)習網(wǎng)站,可以將課程的教學(xué)大綱、電子教案、課件、講課錄像等在網(wǎng)站上進(jìn)行,建立課程的題庫,方便學(xué)生自測學(xué)習效果。設置該課程的學(xué)習論壇、課程qq群,教師和學(xué)生可以對課程學(xué)習和相關(guān)的熱點(diǎn)研究問(wèn)題進(jìn)行在線(xiàn)討論。鼓勵學(xué)生多閱讀與匯編語(yǔ)言相關(guān)的英文原版書(shū)籍,如:the art of assembly language,randy hyde、ibm pc assembly language and programming,peter abel、電子工業(yè)出版社出版的intel 匯編語(yǔ)言程序設計(第4版),kip r、 irvine等。學(xué)生多看原版的教材可以開(kāi)闊視野和獲取更多的知識。
c語(yǔ)言程序設計實(shí)驗報告2
實(shí)驗名稱(chēng) 計算出1000以?xún)?0個(gè)最大素數之和
實(shí)驗目的
1、熟練掌握if、if…else、if…else if語(yǔ)句和witch語(yǔ)句格式及使用方法,掌握if語(yǔ)句中的嵌套關(guān)系和匹配原則,利用if語(yǔ)句和switch語(yǔ)句實(shí)現分支選擇結構。
2、熟練掌握while語(yǔ)句、do…while語(yǔ)句和for語(yǔ)句格式及使用方法,掌握三種循環(huán)控制語(yǔ)句的循環(huán)過(guò)程以及循環(huán)結構的嵌套,利用循環(huán)語(yǔ)句實(shí)現循環(huán)結構。
3、掌握簡(jiǎn)單、常用的算法,并在編程過(guò)程中體驗各種算法的編程技巧。進(jìn)一步學(xué)習調試程序,掌握語(yǔ)法錯誤和邏輯錯誤的檢查方法。
實(shí)驗內容
計算并輸出1000以?xún)茸畲蟮?0個(gè)素數以及它們的和。
要求:
在程序內部加必要的注釋。
由于偶數不是素數,可以不考慮對偶數的處理。
雖然在1000以?xún)鹊乃財党^(guò)10個(gè),但是要對1000以?xún)炔粔?0個(gè)素數的情況進(jìn)行處理。
輸出形式為:素數1+素數2+素數3+…+素數10=總和值。
算法描述流程圖
main函數:
判斷素數:
源程序
#include
#include
int sushu(int n)/* 判斷素數的函數 */
{
int t,i;
t=sqrt(n);
for(i=2;i<=t;i++)
if(n%i==0)/* 如果不是素數,返回 0 */
return 0;
return n;/* 如果是素數,返回該數 */
}
void main()
{
int i,j=0,n,m=0,a[1000],x;
/*clrscr();*/
printf("please input a number form 1 to 1000:");
scanf("%d",&x);
if(x==2)/* x=2時(shí)的處理 */
printf("%dn",x);
else if(x<=1) /* x在1~1000范圍外時(shí)的處理 */
printf("error!n");
else
{
if(x%2==0)/* x為偶數時(shí),把x變?yōu)槠鏀?*/
x--;
for(i=x;i>1;i-=2)/* x為奇數時(shí),做函數計算 */
{
n=sushu(i); /* 做判斷素數的函數調用 */
if(n!=0)/* 對素數的處理 */
{
a[j]=n;/* 把素數由大至小存入數組a[ ]中 */
j++;
if(j<11)
m+=n; /* 統計前10個(gè)素數之和 */
}
}
if(j<10)/* 當素數個(gè)數小于10個(gè)時(shí),結果輸出 */
{
for(i=0;i
{
n=a[i];
printf("%d",n);
printf("+");
}
printf("2=");
printf("%dn",m+2);
}
else for(i=0;i<10;i++)/* 當素數個(gè)數大于等于10個(gè)時(shí),結果輸出 */
{
n=a[i];
printf("%d",n);
if(i<9)
printf("+");
else
{
printf("=");
printf("%dn",m);
}
}
}
}
測試數據
分別輸入1000、100、10測試。
運行結果
出現問(wèn)題及解決方法
當素數個(gè)數小于10時(shí)的處理不夠完善,考慮不夠周全。把“+2”的處理做的太勉強。
程序過(guò)大,不夠精簡(jiǎn),無(wú)用文字太多。
學(xué)習耐心與細心不足,如scanf(“%d”,&n);中的“&”經(jīng)常忘記。
編程思想不夠發(fā)散,例如如何判斷素數,只能想出2種方式(其中1種為參考教科書(shū)上內容);在今后學(xué)習中應更多的動(dòng)腦,綜合運用所學(xué)。
基本功不夠,如清屏clrscr()等函數用的不好,有時(shí)同樣的.問(wèn)題多次犯,給實(shí)驗課老師帶來(lái)很大的麻煩。這說(shuō)明我的知識不夠廣,有很多有用但不做考試要求的書(shū)中內容沒(méi)有學(xué)好,認識程度不夠深刻。就算以后c語(yǔ)言這門(mén)課程結束后,也應多看相關(guān)東西,多上機練習,才能真正從本質(zhì)上提高自己。
物理實(shí)驗報告 ·化學(xué)實(shí)驗報告 ·生物實(shí)驗報告 ·實(shí)驗報告格式 ·實(shí)驗報告模板
知識不夠廣泛,如vc++6.0等程序,自己試了好一陣也不會(huì )用;說(shuō)明我電腦水平還是不夠,自學(xué)能力不夠。已會(huì )的東西掌握的還是不夠好。
實(shí)驗心得
通過(guò)本次c語(yǔ)言上機實(shí)驗,我對這個(gè)介于人類(lèi)與非人類(lèi)之間
的計算機編程語(yǔ)言有了一定的體驗。其間開(kāi)心過(guò)、郁悶過(guò)、無(wú)奈過(guò)、彷徨過(guò)……隨著(zhù)實(shí)驗的勝利成功與實(shí)驗報告的勝利完成,有點(diǎn)微微的自豪感使人難忘。感謝高克寧老師的高標準、嚴要求,感謝實(shí)驗課上小老師們的耐心指點(diǎn),也感謝我在實(shí)驗中經(jīng)歷過(guò)的點(diǎn)點(diǎn)滴滴……伴隨著(zhù)學(xué)習的深入,我發(fā)現高深的東西還有很多很多,等待著(zhù)我自己去挖掘。對c語(yǔ)言,我會(huì )更加努力。
【c語(yǔ)言程序設計實(shí)驗報告】相關(guān)文章:
c語(yǔ)言實(shí)驗報告范本03-18
c語(yǔ)言程序設計心得體會(huì )(通用13篇)12-28
c語(yǔ)言程序設計心得體會(huì )經(jīng)典(5篇)09-29
C程序設計求職信02-13
c語(yǔ)言實(shí)踐報告01-17
C#程序設計下課程設計教學(xué)分析12-17